1 /**
  2  * 设置别名
  3  */
  4 define(["core", "component/process_components"], function() {
  5 
  6     var _html = '<div class="we_cell_form_box" attr="root"></div>';
  7 
  8     var _title = '确认继续更换手机请点击下一步,否则点击取消放弃操作';
  9 
 10     var _btmTips = ["<strong>温馨提示:</strong>如果是手机账号,更换手机后登录名将变成新手机号<br>",
 11                         "<strong>手机账号:</strong>可以用手机号码作为登录名的账号"].join('');
 12 
 13     /**
 14      * API
 15      * @type {Object}
 16      */
 17     var api = {
 18         setLoginName:function (loginName, handler)
 19         {
 20             //handler();
 21             var url = $we.conf.ENV.__API + "/ajaxSafe/setAlias";
 22             $we.utils.request(url, {
 23                 alias:loginName
 24             }, function(data) {
 25                 handler(data.data);
 26             }, function(data) {
 27                 $we.comp.alert(data.msg);
 28             }, "POST", true);
 29         }
 30     };
 31 
 32 
 33     $we.widget.reg("set_login_name", {
 34         interfaces:{
 35             /**
 36              * render函数,AAA的接口函数,对于业务流组件来说,它完全可以转变为一个内置函数,
 37              * 业务流组件在大多数情况下,不会调用interfaces
 38              */
 39             render:function ()
 40             {
 41                 var phone = $we.process.getData("phone");
 42                 var defaultTip=[];
 43                 defaultTip.push("更改手机后,原手机账号");
 44                 defaultTip.push('<span class="we_yellow">'+phone+'</span>');
 45                 defaultTip.push("将不能用手机号码直接登录,请设置新的登录名");
 46 
 47                 var tips = $we.utils.setValue(this.params.tips, defaultTip.join(''));
 48                 var title = $we.utils.setValue(this.params.title, _title);
 49                 var btmTips = $we.utils.setValue(this.params.btmTips, _btmTips);
 50 
 51                 this.tips = $we.widget.add("process.tips.small", this.el, {
 52                     content:tips
 53                 });
 54                 this.append(this.el, _html);
 55                 this.form = $we.widget.add("Form", $(this.node['root']), {
 56                     form_elements:[
 57                         {
 58                             label:'新的登录名',
 59                             name:'login_name',
 60                             id:'login_name',
 61                             events:'blur',
 62                             info:'4-16位数字和字母的组合,首位为字母',
 63                             require:true
 64                         }
 65                     ],
 66                     title:title
 67                 });
 68 
 69                 this.notify("renderBottom", btmTips);
 70                 this.notify("setButton", {cancel:true});
 71             }
 72         },
 73         /**
 74          * 初始化函数
 75          * @param  {element} el    通过业务流组件传递过来的参数,该业务流组件的business节点
 76          * @param  {object} params 初始化业务流组件时,每个组件传递的参数
 77          */
 78         init:function (el, params)
 79         {
 80             params = params || {};
 81 
 82             this.el = el;
 83             this.params = params;
 84         },
 85         /**
 86          * 每个组件,如果需要使用业务流的话,需要声明这个
 87          */
 88         process:{
 89             /**
 90              * 组件开始调用,业务流组件会调用这个接口来启用组件
 91              */
 92             start:function ()
 93             {
 94                 this.render();
 95             },
 96             /**
 97              * 组件结束调用,当这个业务结束的时候,业务流组件会调用它
 98              */
 99             end:function ()
100             {
101                 this.tips.remove();
102                 $(this.el).empty();
103             },
104             /**
105              * 组件检测是否可以进行下一步
106              * 当组件需要进入下一步时,业务流组件将会调用这个接口,
107              * 这个接口需要通过 this.notify("goNext") 来通知业务流组件它检测通过,
108              * 否则业务流组件在这个地方会停滞下来 通过 this.notify("pause")来通知
109              */
110             checkSucc:function ()
111             {
112                 var t = this;
113                 var result = this.form.valid();
114                 if (result) {
115                     var loginName = this.form.getElement('login_name').val();
116                     api.setLoginName(loginName,function(){
117                         $we.process.setData("alias",loginName);
118                         t.notify("goNext");
119                     });
120                 }
121             }
122         },
123         events:{
124         }
125     });
126 
127 });