Address.js 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. MWF.require("MWF.widget.PinYin", null, false);
  2. MWF.xDesktop.requireApp("process.Xform", "Combox", null, false);
  3. MWF.xApplication.process.Xform.Address = MWF.APPAddress = new Class({
  4. Implements: [Events],
  5. Extends: MWF.APPCombox,
  6. options: {
  7. "moduleEvents": ["load", "queryLoad", "postLoad", "commitInput", "change"]
  8. },
  9. initialize: function(node, json, form){
  10. this.node = $(node);
  11. this.node.store("module", this);
  12. this.json = json;
  13. this.form = form;
  14. this.field = true;
  15. },
  16. _loadNode: function(){
  17. if (this.readonly){
  18. this._loadNodeRead();
  19. }else{
  20. this._loadNodeEdit();
  21. }
  22. },
  23. _loadNodeRead: function(){
  24. this.node.empty();
  25. //new Element("select").inject(this.node);
  26. },
  27. _loadNodeEdit: function(){
  28. this.node.empty();
  29. MWF.require("MWF.widget.Combox", function(){
  30. this.combox = new MWF.widget.Combox({
  31. "style": "blue",
  32. "onlySelect": true,
  33. "count": 4,
  34. "focusList": true,
  35. "onCommitInput": function(){
  36. this.fireEvent("commitInput");
  37. }.bind(this),
  38. "onChange": function(e, oldValues){
  39. var thisValues = this.combox.values.map(function(v){ return v.data || v.value});
  40. if ((oldValues && (oldValues.join() !== thisValues.join()))){
  41. while (this.combox.values.length-1>e.index){
  42. this.combox.deleteItem(this.combox.values[this.combox.values.length-1])
  43. }
  44. this.fireEvent("change");
  45. }
  46. }.bind(this),
  47. "optionsMethod": this._searchOptions.bind(this)
  48. });
  49. this.combox.intoEdit = function(e){
  50. if (this.options.count){
  51. if (this.values.length>=this.options.count){
  52. // if (this.input) this.input.noBlur = true;
  53. if (this.input) this.input.node.hide();
  54. // this.getLast().edit();
  55. return false;
  56. }
  57. }
  58. if (!this.input){
  59. this.input = new MWF.widget.Combox.Input(this, this, "");
  60. this.input.node.inject(this.node);
  61. this.input.node.setStyle("width", "1px");
  62. }
  63. this.input.node.show();
  64. this.input.setInputNodeStyles();
  65. //this.input.node.set("value", "111");
  66. this.input.node.focus();
  67. this.input.setInputPosition();
  68. if (this.options.focusList) this.input.searchItems();
  69. }
  70. }.bind(this), false);
  71. this.combox.inject(this.node);
  72. this.node.set({
  73. "id": this.json.id,
  74. "MWFType": this.json.type
  75. });
  76. this.combox.addEvent("change", function(){
  77. this.validationMode();
  78. if (this.validation()) this._setBusinessData(this.getInputData("change"));
  79. }.bind(this));
  80. },
  81. _searchOptions: function(value, callback){
  82. value = value.toLowerCase();
  83. var i = (this.combox.editItem) ? this.combox.editItem.getItemPosition() : this.combox.values.length;
  84. switch (i) {
  85. case 0: //省
  86. o2.Actions.get("x_general_assemble_control").listProvince(function(json){
  87. var list = [];
  88. json.data.each(function(text){
  89. var k = text.name;
  90. var keyword = k+MWF.widget.PinYin.toPY(k).toLowerCase()+MWF.widget.PinYin.toPYFirst(k).toLowerCase();
  91. if (value){
  92. //if (keyword.indexOf(value)!==-1)
  93. list.push({"text": k, "value": k});
  94. }else{
  95. list.push({"text": k, "value": k});
  96. }
  97. }.bind(this));
  98. if (list.length) if (callback) callback(list);
  99. }.bind(this));
  100. // MWF.UD.getPublicData("addr_province", function(json){
  101. // var list = [];
  102. // json.each(function(text){
  103. // var keyword = text+MWF.widget.PinYin.toPY(text).toLowerCase()+MWF.widget.PinYin.toPYFirst(text).toLowerCase();
  104. // if (value){
  105. // if (keyword.indexOf(value)!==-1) list.push({"text": text, "value": text});
  106. // }else{
  107. // list.push({"text": text, "value": text});
  108. // }
  109. //
  110. // }.bind(this));
  111. // if (list.length) if (callback) callback(list);
  112. // });
  113. break;
  114. case 1: //市
  115. var item = this.combox.getFirst();
  116. o2.Actions.get("x_general_assemble_control").listCity(item.data || item.value, function(json){
  117. var list = [];
  118. json.data.each(function(text){
  119. var k = text.name;
  120. var keyword = k+MWF.widget.PinYin.toPY(k).toLowerCase()+MWF.widget.PinYin.toPYFirst(k).toLowerCase();
  121. if (value){
  122. //if (keyword.indexOf(value)!==-1)
  123. list.push({"text": k, "value": k});
  124. }else{
  125. list.push({"text": k, "value": k});
  126. }
  127. }.bind(this));
  128. if (list.length) if (callback) callback(list);
  129. }.bind(this));
  130. // MWF.UD.getPublicData("addr_city_"+item.data, function(json){
  131. // var list = [];
  132. // json.each(function(text){
  133. // var keyword = text+MWF.widget.PinYin.toPY(text).toLowerCase()+MWF.widget.PinYin.toPYFirst(text).toLowerCase();
  134. // if (value){
  135. // if (keyword.indexOf(value)!==-1) list.push({"text": text, "value": text});
  136. // }else{
  137. // list.push({"text": text, "value": text});
  138. // }
  139. // }.bind(this));
  140. // if (list.length) if (callback) callback(list);
  141. // });
  142. break;
  143. case 2: //区
  144. var f = this.combox.getFirst();
  145. var p = f.data || f.value;
  146. var item = this.combox.getFirst().getNextItem();
  147. o2.Actions.get("x_general_assemble_control").listDistrict(p, item.data||item.value, function(json){
  148. var list = [];
  149. json.data.each(function(text){
  150. var k = text.name;
  151. var keyword = k+MWF.widget.PinYin.toPY(k).toLowerCase()+MWF.widget.PinYin.toPYFirst(k).toLowerCase();
  152. if (value){
  153. //if (keyword.indexOf(value)!==-1)
  154. list.push({"text": k, "value": k});
  155. }else{
  156. list.push({"text": k, "value": k});
  157. }
  158. }.bind(this));
  159. if (list.length) if (callback) callback(list);
  160. }.bind(this));
  161. // MWF.UD.getPublicData("addr_district_"+item.data, function(json){
  162. // var list = [];
  163. // json.each(function(text){
  164. // var keyword = text+MWF.widget.PinYin.toPY(text).toLowerCase()+MWF.widget.PinYin.toPYFirst(text).toLowerCase();
  165. // if (value){
  166. // if (keyword.indexOf(value)!==-1) list.push({"text": text, "value": text});
  167. // }else{
  168. // list.push({"text": text, "value": text});
  169. // }
  170. // }.bind(this));
  171. // if (list.length) if (callback) callback(list);
  172. // });
  173. break;
  174. default:
  175. if (callback) callback([]);
  176. }
  177. }
  178. });