CheckBoxGroup.js 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. /**
  2. * 多个checkbox
  3. */
  4. Ext.define('erp.view.core.form.CheckBoxGroup', {
  5. extend: 'Ext.form.CheckboxGroup',
  6. alias: 'widget.erpcheckboxgroup',
  7. layout: 'column',
  8. baseCls: 'x-field',
  9. //fieldContainer默认为x-component x-container x-container-default
  10. initComponent: function() {
  11. this.callParent(arguments);
  12. var me = this;
  13. var logic = this.logic;
  14. //没办法做到忽略
  15. var arr = logic.split('#');
  16. if (arr.length > 1) {
  17. logic = arr[1];
  18. this.logic = 'ignore';
  19. } else logic = arr[0];
  20. me.insert(0, {
  21. xtype: 'hidden',
  22. name: this.name,
  23. id: this.name + "_checks",
  24. value: this.value
  25. });
  26. var arr = logic.split(";");
  27. var value = this.value;
  28. var checked = false;
  29. for (var i = 1; i < arr.length + 1; i++) {
  30. if (value && value.split(";")[i - 1] == 1) {
  31. checked = true;
  32. } else checked = false;
  33. me.insert(i, {
  34. xtype: 'checkbox',
  35. columnWidth: 1 / Math.min(arr.length, 6),
  36. boxLabel: arr[i - 1],
  37. style: {
  38. marginLeft: '10px'
  39. },
  40. checked: checked,
  41. readOnly: me.readOnly,
  42. listeners: {
  43. change: function(field, newValue, oldValue) {
  44. if (newValue) {
  45. me.setFiledValue();
  46. } else {
  47. me.setFiledValue();
  48. }
  49. }
  50. }
  51. });
  52. }
  53. },
  54. listeners: {
  55. afterrender: function() { //去掉fieldContainer默认的高度和滚动样式
  56. this.getEl().dom.childNodes[1].style.height = 22;
  57. this.getEl().dom.childNodes[1].style.overflow = 'hidden';
  58. }
  59. },
  60. isValid: function() {
  61. return this.items.items[0].isValid();
  62. },
  63. setValue: function(value) {
  64. this.value = value;
  65. },
  66. isDirty: function() {
  67. return true;
  68. },
  69. setFiledValue: function(field) {
  70. var value = "";
  71. var items = this.items.items;
  72. for (var i = 1; i < items.length; i++) {
  73. if (items[i].value) {
  74. value += "1;";
  75. } else {
  76. value += "-1;";
  77. }
  78. }
  79. value = value.substring(0, value.length - 1);
  80. this.items.items[0].setValue(value);
  81. },
  82. getValue: function() {
  83. return this.value;
  84. },
  85. setReadOnly: function(bool) {
  86. Ext.Array.each(this.items.items,
  87. function(item) {
  88. item.setReadOnly(bool);
  89. });
  90. },
  91. setFieldStyle: function(style) {
  92. this.items.items[0].setFieldStyle(style);
  93. }
  94. });