BoardManageRightPanel.js 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. Ext.QuickTips.init();
  2. Ext.define('erp.view.desktop.BoardManageRightPanel',{
  3. extend: 'Ext.panel.Panel',
  4. alias:'widget.manageright',
  5. id:'manageright',
  6. border: 0,
  7. layout:'fit',
  8. autoScroll: true,
  9. hideBorders: true,
  10. initComponent:function(){
  11. var me = this;
  12. var enabledStore = Ext.create('Ext.data.Store', {
  13. fields: ['value', 'name'],
  14. data: [
  15. { "value": true, "name": "是" },
  16. { "value": false, "name": "否" }
  17. ]
  18. });
  19. var enabledCombo = new Ext.form.ComboBox({
  20. store: enabledStore,
  21. valueField: 'value',
  22. displayField: 'name',
  23. mode: 'local',
  24. forceSelection: true,
  25. editable: false,
  26. triggerAction: 'all',
  27. selectOnFocus: true
  28. });
  29. me.items = [{
  30. xtype: 'grid',
  31. id:'tplGrid',
  32. selectedIndex: 1,
  33. store : Ext.create('Ext.data.Store', {
  34. fields : ['code', 'content', 'enabled', 'description', 'name','title','panelCode'],
  35. data: []
  36. }),
  37. columnLines:true,
  38. columns: [
  39. { text: 'ID', dataIndex: 'code', hidden: true },
  40. { text: '看板名称', dataIndex: 'name', flex: 1, editor: 'textfield', renderer: function (v, metadata, record, rowIndex, columnIndex, store) {
  41. metadata.tdAttr = 'data-qtip="' + (v || '') + '"';
  42. return v;
  43. }
  44. },
  45. { text: '备注', dataIndex: 'description', flex: 1, editor: 'textfield', renderer: function (v, metadata, record, rowIndex, columnIndex, store) {
  46. metadata.tdAttr = 'data-qtip="' + (v || '') + '"';
  47. return v;
  48. }
  49. },
  50. {
  51. text: '是否生效', dataIndex: 'enabled', width: 100, editor: enabledCombo, renderer: function(value) {
  52. return value ? '是' : '否'
  53. }
  54. },
  55. { xtype: 'actioncolumn', align: 'center', items: [{
  56. iconCls: 'save',
  57. tooltip: '保存',
  58. handler: function(th, rowIndex, colIndex) {
  59. var grid =this.up('grid');
  60. var rec = grid.getStore().getAt(rowIndex);
  61. var data = Object.assign({}, rec.data);
  62. data.get = function(key) {
  63. return this[key]
  64. }
  65. data.set = function(key, value) {
  66. this[key] = value;
  67. }
  68. delete data.content;
  69. delete data.title;
  70. var record = {
  71. code: data.code,
  72. panelCode: data.panelCode,
  73. description: data.description,
  74. enabled: data.enabled,
  75. name: data.name,
  76. get: data.get,
  77. set: data.set
  78. }
  79. grid.saveModel(record);
  80. }
  81. }, '-', {
  82. iconCls: 'edit',
  83. tooltip: '看板配置',
  84. handler: function(grid, rowIndex, colIndex, th, eOpts, record) {
  85. var code = record.get('code');
  86. var panelRecord = Ext.getCmp('managemain').initRecord;
  87. window.open(basePath+'board?code=' + code + '&name=' + record.get('name') + '&panelCode=' + record.get('panelCode') + '&panelName=' + panelRecord.get('name'), code);
  88. }
  89. }] }
  90. ],
  91. tbar: [{
  92. xtype: 'button',
  93. text: '添加看板',
  94. disabled: true,
  95. handler: function() {
  96. if(!Ext.getCmp('managemain').initRecord.get('code')) {
  97. Ext.Msg.alert('提示', '请先保存面板再执行添加看板操作!');
  98. return;
  99. }
  100. var grid = this.up('grid');
  101. var record = {
  102. name: '新看板',
  103. description: '',
  104. content: '<content></content>',
  105. panelCode: Ext.getCmp('managemain').initRecord.get('code'),
  106. enabled: true
  107. }
  108. grid.addModel(record);
  109. }
  110. }, {
  111. xtype: 'button',
  112. text: '删除看板',
  113. disabled: true,
  114. handler: function() {
  115. var grid = this.up('grid');
  116. var record = grid.getSelectionModel().getSelection()[0];
  117. if(record) {
  118. Ext.Msg.confirm('提示','是否确定删除看板 ' + record.get('name') + ' ?',function(btn){
  119. if(btn=='yes'){
  120. grid.deleteModel(record, grid.getStore().indexOf(record));
  121. }
  122. });
  123. }
  124. }
  125. }],
  126. plugins: [
  127. Ext.create('Ext.grid.plugin.CellEditing', {
  128. clicksToEdit: 2
  129. })
  130. ],
  131. loadGridData: function() {
  132. var grid = this;
  133. var panelRecord = Ext.getCmp('managemain').initRecord;
  134. grid.getEl().mask('loading...');
  135. Ext.Ajax.request({
  136. url:'kanban/get/byPanel/' + panelRecord.get('code'),
  137. method:'POST',
  138. callback:function(options,success,response){
  139. grid.getEl().unmask();
  140. if(response.responseText == '') return;
  141. var res = JSON.parse(response.responseText);
  142. if(success) {
  143. grid.selectedIndex = 1;
  144. res = res instanceof Array ? res : [res];
  145. grid.getStore().loadData(res);
  146. grid.getStore().sort('enabled', 'DESC');
  147. }else {
  148. Ext.Msg.alert('失败', res.message);
  149. }
  150. }
  151. });
  152. },
  153. addModel: function(record) {
  154. var grid = this;
  155. grid.getStore().insert(grid.getStore().getCount(), record);
  156. grid.getPlugin().startEditByPosition({ row: grid.getStore().getCount() - 1, column: 0 });
  157. },
  158. saveModel: function(record) {
  159. var grid = this;
  160. var type = record.get('code') ? 'updatePart' : 'savePart'
  161. Ext.Ajax.request({
  162. url:'kanban/' + type,
  163. method:'POST',
  164. params:{
  165. json:Ext.encode(record)
  166. },
  167. callback:function(options,success,response){
  168. var res = JSON.parse(response.responseText);
  169. if(success) {
  170. if(grid) {
  171. grid.loadGridData();
  172. Ext.Msg.alert('成功', '已更新');
  173. }
  174. }else {
  175. Ext.Msg.alert('失败', res.message);
  176. }
  177. }
  178. });
  179. },
  180. deleteModel: function (record) {
  181. var grid = this;
  182. if (record.get('code')) {
  183. Ext.Ajax.request({
  184. url: 'kanban/delete/' + record.get('code'),
  185. method: 'POST',
  186. callback: function (options, success, response) {
  187. var res = JSON.parse(response.responseText);
  188. if (success) {
  189. if (grid) {
  190. grid.loadGridData();
  191. }
  192. } else {
  193. Ext.Msg.alert('失败', res.message);
  194. }
  195. }
  196. });
  197. } else {
  198. grid.getStore().remove(record);
  199. }
  200. }
  201. }];
  202. this.callParent(arguments);
  203. },
  204. setButtonDisabled: function(isDisabled) {
  205. var grid = this.down('grid');
  206. var buttons = grid.dockedItems.items[1].items.items;
  207. Ext.Array.each(buttons,function(btn){
  208. if(btn.xtype=='button'&&btn.disabled!=isDisabled){
  209. btn.setDisabled(isDisabled);
  210. }
  211. });
  212. },
  213. selectModel:function(data){
  214. var me = this;
  215. grid.selectedIndex = 1;
  216. var grid = Ext.getCmp('tplGrid');
  217. var store = grid.getStore();
  218. var records = new Array();
  219. Ext.Array.each(store.data.items,function(rec,index){
  220. Ext.Array.each(data,function(item){
  221. if(rec.get('code')==item.code){
  222. records.push(rec);
  223. }
  224. });
  225. });
  226. grid.getSelectionModel().select(records);
  227. }
  228. });