Address.js 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  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. "count": 4,
  32. "focusList": true,
  33. "onCommitInput": function(){
  34. this.fireEvent("commitInput");
  35. }.bind(this),
  36. "onChange": function(){
  37. this.fireEvent("change");
  38. }.bind(this),
  39. "optionsMethod": this._searchOptions.bind(this)
  40. });
  41. this.combox.intoEdit = function(e){
  42. if (this.options.count){
  43. if (this.values.length>=this.options.count){
  44. // if (this.input) this.input.noBlur = true;
  45. if (this.input) this.input.node.hide();
  46. // this.getLast().edit();
  47. return false;
  48. }
  49. }
  50. if (!this.input){
  51. this.input = new MWF.widget.Combox.Input(this, this, "");
  52. this.input.node.inject(this.node);
  53. this.input.node.setStyle("width", "1px");
  54. }
  55. this.input.node.show();
  56. this.input.setInputNodeStyles();
  57. //this.input.node.set("value", "111");
  58. this.input.node.focus();
  59. this.input.setInputPosition();
  60. if (this.options.focusList) this.input.searchItems();
  61. }
  62. }.bind(this), false);
  63. this.combox.inject(this.node);
  64. this.node.set({
  65. "id": this.json.id,
  66. "MWFType": this.json.type
  67. });
  68. this.combox.addEvent("change", function(){
  69. this.validationMode();
  70. if (this.validation()) this._setBusinessData(this.getInputData("change"));
  71. }.bind(this));
  72. },
  73. _searchOptions: function(value, callback){
  74. value = value.toLowerCase();
  75. var i = (this.combox.editItem) ? this.combox.editItem.getItemPosition() : this.combox.values.length;
  76. switch (i) {
  77. case 0: //省
  78. o2.Actions.get("x_general_assemble_control").listProvince(function(json){
  79. var list = [];
  80. json.data.each(function(text){
  81. var k = text.name;
  82. var keyword = k+MWF.widget.PinYin.toPY(k).toLowerCase()+MWF.widget.PinYin.toPYFirst(k).toLowerCase();
  83. if (value){
  84. if (keyword.indexOf(value)!==-1) list.push({"text": k, "value": k});
  85. }else{
  86. list.push({"text": k, "value": k});
  87. }
  88. }.bind(this));
  89. if (list.length) if (callback) callback(list);
  90. }.bind(this));
  91. // MWF.UD.getPublicData("addr_province", function(json){
  92. // var list = [];
  93. // json.each(function(text){
  94. // var keyword = text+MWF.widget.PinYin.toPY(text).toLowerCase()+MWF.widget.PinYin.toPYFirst(text).toLowerCase();
  95. // if (value){
  96. // if (keyword.indexOf(value)!==-1) list.push({"text": text, "value": text});
  97. // }else{
  98. // list.push({"text": text, "value": text});
  99. // }
  100. //
  101. // }.bind(this));
  102. // if (list.length) if (callback) callback(list);
  103. // });
  104. break;
  105. case 1: //市
  106. var item = this.combox.getFirst();
  107. o2.Actions.get("x_general_assemble_control").listCity(item.data, function(json){
  108. var list = [];
  109. json.data.each(function(text){
  110. var k = text.name;
  111. var keyword = k+MWF.widget.PinYin.toPY(k).toLowerCase()+MWF.widget.PinYin.toPYFirst(k).toLowerCase();
  112. if (value){
  113. if (keyword.indexOf(value)!==-1) list.push({"text": k, "value": k});
  114. }else{
  115. list.push({"text": k, "value": k});
  116. }
  117. }.bind(this));
  118. if (list.length) if (callback) callback(list);
  119. }.bind(this));
  120. // MWF.UD.getPublicData("addr_city_"+item.data, function(json){
  121. // var list = [];
  122. // json.each(function(text){
  123. // var keyword = text+MWF.widget.PinYin.toPY(text).toLowerCase()+MWF.widget.PinYin.toPYFirst(text).toLowerCase();
  124. // if (value){
  125. // if (keyword.indexOf(value)!==-1) list.push({"text": text, "value": text});
  126. // }else{
  127. // list.push({"text": text, "value": text});
  128. // }
  129. // }.bind(this));
  130. // if (list.length) if (callback) callback(list);
  131. // });
  132. break;
  133. case 2: //区
  134. var p = this.combox.getFirst().data;
  135. var item = this.combox.getFirst().getNextItem();
  136. o2.Actions.get("x_general_assemble_control").listDistrict(p, item.data, function(json){
  137. var list = [];
  138. json.data.each(function(text){
  139. var k = text.name;
  140. var keyword = k+MWF.widget.PinYin.toPY(k).toLowerCase()+MWF.widget.PinYin.toPYFirst(k).toLowerCase();
  141. if (value){
  142. if (keyword.indexOf(value)!==-1) list.push({"text": k, "value": k});
  143. }else{
  144. list.push({"text": k, "value": k});
  145. }
  146. }.bind(this));
  147. if (list.length) if (callback) callback(list);
  148. }.bind(this));
  149. // MWF.UD.getPublicData("addr_district_"+item.data, function(json){
  150. // var list = [];
  151. // json.each(function(text){
  152. // var keyword = text+MWF.widget.PinYin.toPY(text).toLowerCase()+MWF.widget.PinYin.toPYFirst(text).toLowerCase();
  153. // if (value){
  154. // if (keyword.indexOf(value)!==-1) list.push({"text": text, "value": text});
  155. // }else{
  156. // list.push({"text": text, "value": text});
  157. // }
  158. // }.bind(this));
  159. // if (list.length) if (callback) callback(list);
  160. // });
  161. break;
  162. default:
  163. if (callback) callback([]);
  164. }
  165. }
  166. });