{% set sms_code_url = entire_url('/rbac/gen_sms_code.dspy') %} {% set code_login_url = entire_url('/rbac/user/code_login.dspy') %} {% set sms_register_url = entire_url('/rbac/user/sms_register.dspy') %} { "id": "login_window", "widgettype": "PopupWindow", "options": { "title": "欢迎登录", "i18n": true, "css": "login-window", "auto_open": true, "archor": "cc", "cwidth": 26, "cheight": 30 }, "subwidgets": [ { "widgettype": "TabPanel", "id": "login_tabs", "options": { "tab_wide": "auto", "height": "100%", "width": "100%", "tab_pos": "top", "items": [ { "name": "userpasswd", "label": "密码登录", "content": { "widgettype": "VScrollPanel", "options": {"height": "100%"}, "subwidgets": [ { "widgettype": "Form", "options": { "cols": 1, "fields": [ {"name": "username", "label": "用户名", "uitype": "str"}, {"name": "password", "label": "密码", "uitype": "password"} ] }, "binds": [ { "wid": "self", "event": "submit", "actiontype": "urlwidget", "target": "self", "options": { "method": "POST", "url": "{{entire_url('up_login.dspy')}}" } } ] } ] } }, { "name": "phonecode", "label": "手机登录", "content": { "widgettype": "VScrollPanel", "options": {"height": "100%"}, "subwidgets": [ { "widgettype": "VBox", "options": {"gap": "8px"}, "subwidgets": [ { "widgettype": "Text", "options": { "otext": "未注册的手机号将自动创建账号", "i18n": true, "css": "login-desc" } }, { "widgettype": "Form", "id": "phone_form", "options": { "cols": 1, "fields": [ {"name": "cell_no", "label": "手机号", "uitype": "str"}, {"name": "codeid", "uitype": "hide", "value": ""}, {"name": "check_code", "label": "验证码", "uitype": "str"} ] }, "binds": [ { "wid": "self", "event": "submit", "actiontype": "urlwidget", "target": "self", "options": { "method": "POST", "url": "{{code_login_url}}" } } ] }, { "widgettype": "Button", "id": "gen_code_btn", "options": {"label": "发送验证码", "i18n": true, "css": "sms-send-btn"}, "binds": [ { "wid": "self", "event": "click", "actiontype": "script", "target": "self", "script": "var form=bricks.getWidgetById('phone_form',bricks.app);if(!form)return;var cell=form._getValue().cell_no;if(!cell||cell.length<11){alert('请输入正确的手机号');return;}var btn=this;btn.disabled=true;btn.text_w&&btn.text_w.set_otext('发送中...');fetch('{{sms_code_url}}?_webbricks_=1&cellphone='+encodeURIComponent(cell)).then(function(r){return r.json()}).then(function(d){if(d.status==='ok'){var w=form.name_inputs['codeid'];if(w)w.setValue(d.data.key);btn.text_w&&btn.text_w.set_otext('已发送');var s=60;var t=setInterval(function(){s--;if(s<=0){clearInterval(t);btn.disabled=false;btn.text_w&&btn.text_w.set_otext('重新发送')}else btn.text_w&&btn.text_w.set_otext(s+'s')},1000)}else{alert(d.data.message||'发送验证码出错');btn.disabled=false;btn.text_w&&btn.text_w.set_otext('发送验证码')}}).catch(function(e){alert('网络错误: '+e);btn.disabled=false;btn.text_w&&btn.text_w.set_otext('发送验证码')})" } ] } ] } ] } }, { "name": "register", "label": "注册账号", "content": { "widgettype": "VScrollPanel", "options": {"height": "100%"}, "subwidgets": [ { "widgettype": "VBox", "options": {"gap": "8px"}, "subwidgets": [ { "widgettype": "Text", "options": { "otext": "手机号需短信验证后方可注册", "i18n": true, "css": "login-desc" } }, { "widgettype": "Form", "id": "register_form", "options": { "cols": 1, "fields": [ {"name": "username", "label": "用户名", "uitype": "str"}, {"name": "mobile", "label": "手机号", "uitype": "str"}, {"name": "codeid", "uitype": "hide", "value": ""}, {"name": "check_code", "label": "短信验证码", "uitype": "str"}, {"name": "password", "label": "密码", "uitype": "password"}, {"name": "cfm_password", "label": "确认密码", "uitype": "password"} ] }, "binds": [ { "wid": "self", "event": "submit", "actiontype": "urlwidget", "target": "self", "options": { "method": "POST", "url": "{{sms_register_url}}" } } ] }, { "widgettype": "Button", "id": "reg_sms_btn", "options": {"label": "发送验证码", "i18n": true, "css": "sms-send-btn"}, "binds": [ { "wid": "self", "event": "click", "actiontype": "script", "target": "self", "script": "var form=bricks.getWidgetById('register_form',bricks.app);if(!form)return;var cell=form._getValue().mobile;if(!cell||cell.length<11){alert('请输入正确的手机号');return;}var btn=this;btn.disabled=true;btn.text_w&&btn.text_w.set_otext('发送中...');fetch('{{sms_code_url}}?_webbricks_=1&cellphone='+encodeURIComponent(cell)).then(function(r){return r.json()}).then(function(d){if(d.status==='ok'){var w=form.name_inputs['codeid'];if(w)w.setValue(d.data.key);btn.text_w&&btn.text_w.set_otext('已发送');var s=60;var t=setInterval(function(){s--;if(s<=0){clearInterval(t);btn.disabled=false;btn.text_w&&btn.text_w.set_otext('重新发送')}else btn.text_w&&btn.text_w.set_otext(s+'s')},1000)}else{alert(d.data.message||'发送验证码出错');btn.disabled=false;btn.text_w&&btn.text_w.set_otext('发送验证码')}}).catch(function(e){alert('网络错误: '+e);btn.disabled=false;btn.text_w&&btn.text_w.set_otext('发送验证码')})" } ] } ] } ] } } ] } } ] }