BoardManageRightPanel.js 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  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:{
  41. xtype:'textfield',
  42. regex: /^[A-Za-z0-9_\-\u4e00-\u9fa5]+$/,
  43. regexText: '包含特殊符号'
  44. }, renderer: function (v, metadata, record, rowIndex, columnIndex, store) {
  45. metadata.tdAttr = 'data-qtip="' + (v || '') + '"';
  46. return v;
  47. }
  48. },
  49. { text: '备注', dataIndex: 'description', flex: 1, editor: 'textfield', renderer: function (v, metadata, record, rowIndex, columnIndex, store) {
  50. metadata.tdAttr = 'data-qtip="' + (v || '') + '"';
  51. return v;
  52. }
  53. },
  54. {
  55. text: '是否生效', dataIndex: 'enabled', width: 100, editor: enabledCombo, renderer: function(value) {
  56. return value ? '是' : '否'
  57. }
  58. },
  59. { xtype: 'actioncolumn', align: 'center', items: [{
  60. iconCls: 'save',
  61. tooltip: '保存',
  62. handler: function(th, rowIndex, colIndex) {
  63. var grid =this.up('grid');
  64. var rec = grid.getStore().getAt(rowIndex);
  65. var data = Object.assign({}, rec.data);
  66. data.get = function(key) {
  67. return this[key]
  68. }
  69. data.set = function(key, value) {
  70. this[key] = value;
  71. }
  72. delete data.content;
  73. delete data.title;
  74. var record = {
  75. code: data.code,
  76. panelCode: data.panelCode,
  77. description: data.description,
  78. enabled: data.enabled,
  79. name: data.name,
  80. get: data.get,
  81. set: data.set
  82. }
  83. grid.saveModel(record);
  84. }
  85. }, '-', {
  86. iconCls: 'edit',
  87. tooltip: '看板配置',
  88. handler: function(grid, rowIndex, colIndex, th, eOpts, record) {
  89. var code = record.get('code');
  90. if(!code) {
  91. showErrorMsg('提示', '请先保存该看板!');
  92. return;
  93. }
  94. var panelRecord = Ext.getCmp('managemain').initRecord;
  95. window.open(basePath+'board?code=' + code + '&name=' + record.get('name') + '&panelCode=' + record.get('panelCode') + '&panelName=' + panelRecord.get('name'), code);
  96. }
  97. }] }
  98. ],
  99. tbar: [{
  100. xtype: 'button',
  101. text: '添加看板',
  102. disabled: true,
  103. handler: function() {
  104. if(!Ext.getCmp('managemain').initRecord.get('code')) {
  105. showErrorMsg('提示', '请先保存面板再执行添加看板操作!');
  106. return;
  107. }
  108. var grid = this.up('grid');
  109. var record = {
  110. name: '新看板',
  111. description: '',
  112. content: '<content></content>',
  113. panelCode: Ext.getCmp('managemain').initRecord.get('code'),
  114. enabled: true
  115. }
  116. grid.addModel(record);
  117. }
  118. }, {
  119. xtype: 'button',
  120. text: '删除看板',
  121. disabled: true,
  122. handler: function() {
  123. var grid = this.up('grid');
  124. var record = grid.getSelectionModel().getSelection()[0];
  125. if(record) {
  126. Ext.Msg.confirm('提示','是否确定删除看板 ' + record.get('name') + ' ?',function(btn){
  127. if(btn=='yes'){
  128. grid.deleteModel(record, grid.getStore().indexOf(record));
  129. }
  130. });
  131. }
  132. }
  133. }],
  134. plugins: [
  135. Ext.create('Ext.grid.plugin.CellEditing', {
  136. clicksToEdit: 2
  137. })
  138. ],
  139. loadGridData: function() {
  140. var grid = this;
  141. var panelRecord = Ext.getCmp('managemain').initRecord;
  142. grid.getEl().mask('loading...');
  143. Ext.Ajax.request({
  144. url:'kanban/get/byPanel/' + panelRecord.get('code'),
  145. method:'POST',
  146. callback:function(options,success,response){
  147. grid.getEl().unmask();
  148. if(response.responseText == '') return;
  149. var res = JSON.parse(response.responseText);
  150. if(success) {
  151. grid.selectedIndex = 1;
  152. res = res instanceof Array ? res : [res];
  153. grid.getStore().loadData(res);
  154. grid.getStore().sort('enabled', 'DESC');
  155. }else {
  156. showErrorMsg('失败', res.message);
  157. }
  158. }
  159. });
  160. },
  161. addModel: function(record) {
  162. var grid = this;
  163. grid.getStore().insert(grid.getStore().getCount(), record);
  164. grid.getPlugin().startEditByPosition({ row: grid.getStore().getCount() - 1, column: 0 });
  165. },
  166. saveModel: function(record) {
  167. var grid = this;
  168. var type = record.get('code') ? 'updatePart' : 'savePart';
  169. grid.getEl().mask('loading...');
  170. Ext.Ajax.request({
  171. url:'kanban/' + type,
  172. method:'POST',
  173. params:{
  174. json:Ext.encode(record)
  175. },
  176. callback:function(options,success,response){
  177. grid.getEl().unmask();
  178. var res = JSON.parse(response.responseText);
  179. if(success) {
  180. if(grid) {
  181. grid.loadGridData();
  182. showErrorMsg('成功', '已更新');
  183. }
  184. }else {
  185. showErrorMsg('失败', res.message);
  186. }
  187. }
  188. });
  189. },
  190. deleteModel: function (record) {
  191. var grid = this;
  192. if (record.get('code')) {
  193. Ext.Ajax.request({
  194. url: 'kanban/delete/' + record.get('code'),
  195. method: 'POST',
  196. callback: function (options, success, response) {
  197. var res = JSON.parse(response.responseText);
  198. if (success) {
  199. if (grid) {
  200. grid.loadGridData();
  201. }
  202. } else {
  203. showErrorMsg('失败', res.message);
  204. }
  205. }
  206. });
  207. } else {
  208. grid.getStore().remove(record);
  209. }
  210. }
  211. }];
  212. this.callParent(arguments);
  213. },
  214. setButtonDisabled: function(isDisabled) {
  215. var grid = this.down('grid');
  216. var buttons = grid.dockedItems.items[1].items.items;
  217. Ext.Array.each(buttons,function(btn){
  218. if(btn.xtype=='button'&&btn.disabled!=isDisabled){
  219. btn.setDisabled(isDisabled);
  220. }
  221. });
  222. },
  223. selectModel:function(data){
  224. var me = this;
  225. grid.selectedIndex = 1;
  226. var grid = Ext.getCmp('tplGrid');
  227. var store = grid.getStore();
  228. var records = new Array();
  229. Ext.Array.each(store.data.items,function(rec,index){
  230. Ext.Array.each(data,function(item){
  231. if(rec.get('code')==item.code){
  232. records.push(rec);
  233. }
  234. });
  235. });
  236. grid.getSelectionModel().select(records);
  237. }
  238. });