Address.js 8.3 KB

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