123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234 |
- //MWF.require("MWF.widget.PinYin", null, false);
- MWF.xDesktop.requireApp("process.Xform", "Combox", null, false);
- /** @class Address 地址选择组件。
- * @o2cn 地址选择
- * @example
- * //可以在脚本中获取该组件
- * //方法1:
- * var address = this.form.get("name"); //获取组件
- * //方法2
- * var address = this.target; //组件本身的事件和脚本中获取
- * @extends MWF.xApplication.process.Xform.Combox
- * @o2category FormComponents
- * @o2range {Process|CMS}
- * @hideconstructor
- */
- MWF.xApplication.process.Xform.Address = MWF.APPAddress = new Class(
- /** @lends MWF.xApplication.process.Xform.Address# */
- {
- Implements: [Events],
- Extends: MWF.APPCombox,
- options: {
- "moduleEvents": ["load", "queryLoad", "postLoad", "commitInput", "change"]
- },
- initialize: function(node, json, form){
- this.node = $(node);
- this.node.store("module", this);
- this.json = json;
- this.form = form;
- this.field = true;
- this.fieldModuleLoaded = false;
- },
- _loadNode: function(){
- if (this.isReadonly()){
- this._loadNodeRead();
- }else{
- this._loadNodeEdit();
- }
- },
- _loadNodeRead: function(){
- this.node.empty();
- this.node.set({
- "nodeId": this.json.id,
- "MWFType": this.json.type
- });
- this.loadVal();
- //new Element("select").inject(this.node);
- },
- _loadNodeEdit: function(){
- this.node.empty();
- MWF.require(["MWF.widget.Combox","MWF.widget.PinYin"], function(){
- this.combox = new MWF.widget.Combox({
- "style": this.form.json.addressStyle ? this.form.json.addressStyle.style : "blue",
- "positionX": this.form.json.addressStyle ? this.form.json.addressStyle.positionX : "left",
- "onlySelect": true,
- "count": 4,
- "focusList": true,
- "onCommitInput": function(){
- this.fireEvent("commitInput");
- }.bind(this),
- "onChange": function(e, oldValues){
- var thisValues = this.combox.values.map(function(v){ return v.data || v.value});
- if ((oldValues && (oldValues.join() !== thisValues.join()))){
- while (this.combox.values.length-1>e.index){
- this.combox.deleteItem(this.combox.values[this.combox.values.length-1])
- }
- this.fireEvent("change");
- }
- }.bind(this),
- "optionsMethod": this._searchOptions.bind(this)
- });
- this.combox.intoEdit = function(e){
- if (this.options.count){
- if (this.values.length>=this.options.count){
- // if (this.input) this.input.noBlur = true;
- if (this.input) this.input.node.hide();
- // this.getLast().edit();
- return false;
- }
- }
- if (!this.input){
- this.input = new MWF.widget.Combox.Input(this, this, "");
- this.input.node.inject(this.node);
- this.input.node.setStyle("width", "1px");
- }
- this.input.node.show();
- this.input.setInputNodeStyles();
- //this.input.node.set("value", "111");
- this.input.node.focus();
- this.input.setInputPosition();
- if (this.options.focusList) this.input.searchItems();
- }
- }.bind(this), false);
- this.combox.inject(this.node);
- this.node.set({
- "id": this.json.id,
- "MWFType": this.json.type
- });
- this.combox.addEvent("change", function(){
- this.validationMode();
- if (this.validation()){
- var v = this.getInputData("change");
- this._setBusinessData(v);
- //this._setEnvironmentData(v);
- }
- }.bind(this));
- this.loadVal();
- },
- _searchOptions: function(value, callback, comboxValueObject){
- value = value.toLowerCase();
- var i;
- if( comboxValueObject ){
- i = comboxValueObject.index;
- }else{
- i = (this.combox.editItem) ? this.combox.editItem.getItemPosition() : this.combox.values.length;
- }
- if(this.json.selectRange==="province"){
- if( i > 0 ){
- if (callback) callback([]);
- return;
- }
- }else if(this.json.selectRange==="city"){
- if( i > 1 ){
- if (callback) callback([]);
- return;
- }
- }
- switch (i) {
- case 0: //省
- o2.Actions.get("x_general_assemble_control").listProvince(function(json){
- var list = [];
- json.data.each(function(text){
- var k = text.name;
- var keyword = k+MWF.widget.PinYin.toPY(k).toLowerCase()+MWF.widget.PinYin.toPYFirst(k).toLowerCase();
- if (value){
- //if (keyword.indexOf(value)!==-1)
- list.push({"text": k, "value": k});
- }else{
- list.push({"text": k, "value": k});
- }
- }.bind(this));
- // if (list.length) if (callback) callback(list);
- if (callback) callback(list);
- }.bind(this));
- // MWF.UD.getPublicData("addr_province", function(json){
- // var list = [];
- // json.each(function(text){
- // var keyword = text+MWF.widget.PinYin.toPY(text).toLowerCase()+MWF.widget.PinYin.toPYFirst(text).toLowerCase();
- // if (value){
- // if (keyword.indexOf(value)!==-1) list.push({"text": text, "value": text});
- // }else{
- // list.push({"text": text, "value": text});
- // }
- //
- // }.bind(this));
- // if (list.length) if (callback) callback(list);
- // });
- break;
- case 1: //市
- var item = this.combox.getFirst();
- o2.Actions.get("x_general_assemble_control").listCity(item.data || item.value, function(json){
- var list = [];
- json.data.each(function(text){
- var k = text.name;
- var keyword = k+MWF.widget.PinYin.toPY(k).toLowerCase()+MWF.widget.PinYin.toPYFirst(k).toLowerCase();
- if (value){
- //if (keyword.indexOf(value)!==-1)
- list.push({"text": k, "value": k});
- }else{
- list.push({"text": k, "value": k});
- }
- }.bind(this));
- // if (list.length) if (callback) callback(list);
- if (callback) callback(list);
- }.bind(this));
- // MWF.UD.getPublicData("addr_city_"+item.data, function(json){
- // var list = [];
- // json.each(function(text){
- // var keyword = text+MWF.widget.PinYin.toPY(text).toLowerCase()+MWF.widget.PinYin.toPYFirst(text).toLowerCase();
- // if (value){
- // if (keyword.indexOf(value)!==-1) list.push({"text": text, "value": text});
- // }else{
- // list.push({"text": text, "value": text});
- // }
- // }.bind(this));
- // if (list.length) if (callback) callback(list);
- // });
- break;
- case 2: //区
- var f = this.combox.getFirst();
- var p = f.data || f.value;
- var item = this.combox.getFirst().getNextItem();
- o2.Actions.get("x_general_assemble_control").listDistrict(p, item.data||item.value, function(json){
- var list = [];
- json.data.each(function(text){
- var k = text.name;
- var keyword = k+MWF.widget.PinYin.toPY(k).toLowerCase()+MWF.widget.PinYin.toPYFirst(k).toLowerCase();
- if (value){
- //if (keyword.indexOf(value)!==-1)
- list.push({"text": k, "value": k});
- }else{
- list.push({"text": k, "value": k});
- }
- }.bind(this));
- if (list.length) if (callback) callback(list);
- }.bind(this));
- // MWF.UD.getPublicData("addr_district_"+item.data, function(json){
- // var list = [];
- // json.each(function(text){
- // var keyword = text+MWF.widget.PinYin.toPY(text).toLowerCase()+MWF.widget.PinYin.toPYFirst(text).toLowerCase();
- // if (value){
- // if (keyword.indexOf(value)!==-1) list.push({"text": text, "value": text});
- // }else{
- // list.push({"text": text, "value": text});
- // }
- // }.bind(this));
- // if (list.length) if (callback) callback(list);
- // });
- break;
- default:
- if (callback) callback([]);
- }
- }
- });
|