diff --git a/www/bill.html b/www/bill.html
index e70285f..e2b99b1 100644
--- a/www/bill.html
+++ b/www/bill.html
@@ -16,7 +16,7 @@
 
 <body>
     <header class="aui-bar aui-bar-nav" style="padding-top:25px;">
-        <a class="aui-pull-left" href="javascript:window.history.back()">
+        <a class="aui-pull-left" href="javascript:window.history.go(-1)">
             <span class="aui-iconfont aui-icon-left"></span>
         </a>
         <div class="aui-title">账单</div>
diff --git a/www/billdetail.html b/www/billdetail.html
index 8bbde06..e419a98 100644
--- a/www/billdetail.html
+++ b/www/billdetail.html
@@ -16,7 +16,7 @@
 
 <body>
     <header class="aui-bar aui-bar-nav" style="padding-top:25px;">
-        <a class="aui-pull-left" href="javascript:window.history.back()">
+        <a class="aui-pull-left" href="javascript:window.history.go(-1)">
             <span class="aui-iconfont aui-icon-left"></span>
         </a>
         <div class="aui-title">账单详情</div>
diff --git a/www/bindcard.html b/www/bindcard.html
index 3ec9d26..8d2ee2f 100644
--- a/www/bindcard.html
+++ b/www/bindcard.html
@@ -30,34 +30,24 @@
                 </div>
             </div>
             <div class="weui-cell" style="padding:0 10px; "> 
+                <div class="weui-cell__hd"><label class="weui-label" style="width: 80px;font-size: 14px;">证件类型</label></div>
+                <div class="weui-cell__bd">
+                    <input class="weui-input" type="text" id='idtype' placeholder="请选择证件类型" style="font-size: 14px;" />
+                </div>
+            </div>
+            <div class="weui-cell" style="padding:0 10px; "> 
+                <div class="weui-cell__hd"><label class="weui-label" style="width: 80px;font-size: 14px;">证件号</label></div>
+                <div class="weui-cell__bd">
+                    <input class="weui-input" type="text" id="idno" style="font-size: 14px;" placeholder="请输入您的证件号" >
+                </div>
+            </div>
+            <div class="weui-cell" style="padding:0 10px; "> 
                 <div class="weui-cell__hd"><label class="weui-label" style="width: 80px;font-size: 14px;">银行卡号</label></div>
                 <div class="weui-cell__bd">
                     <input class="weui-input" type="text" id="cardnum" style="font-size: 14px;" placeholder="市民卡对应的银行卡号">
                 </div>
             </div>
         </div>
-
-        <div class="weui-cells__title">短信验证市民卡预留的手机号</div>
-        <div class="weui-cells weui-cells_form">
-            <div class="weui-cell" style="padding:0 10px; "> 
-                <div class="weui-cell__hd"><label class="weui-label" style="width: 80px;font-size: 14px;">手机号</label></div>
-                <div class="weui-cell__bd">
-                    <input class="weui-input" type="tel" id="phone" style="font-size: 14px;" placeholder="请输入市民卡预留的手机号" disabled="disabled" >
-                </div>
-            </div>
-            <div class="weui-cell weui-cell_vcode" style="padding:0 10px; ">
-                <div class="weui-cell__hd">
-                    <label class="weui-label" style="width: 80px;font-size: 14px;">验证码</label>
-                </div>
-                <div class="weui-cell__bd">
-                    <input class="weui-input" type="number" id="code" style="font-size: 14px;" placeholder="请输入验证码" maxlength="6">
-                </div>
-                <div class="weui-cell__ft">
-                    <button class="weui-vcode-btn" onclick="app.getCode()" id="codebtn" style="width: 100px;height: 1rem;font-size: 14px;">获取验证码</button>
-                </div>
-            </div>
-        </div>
-
         <section class="aui-content-padded" style="margin-top: 30px;">
             <div class="aui-btn aui-btn-block aui-btn-info" tapmode onclick="app.doNext()">下一步</div>
         </section>
diff --git a/www/bindcheck.html b/www/bindcheck.html
new file mode 100644
index 0000000..51e13e9
--- /dev/null
+++ b/www/bindcheck.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+    <link rel="stylesheet" type="text/css" href="mobileui/style.css">
+    <meta name="format-detection" content="telephone=no">
+    <meta charset="utf-8">
+    <meta name="msapplication-tap-highlight" content="no">
+    <meta name="viewport" content="viewport-fit=cover, initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width" />
+    <link rel="stylesheet" type="text/css" href="css/index.css">
+    <link rel="stylesheet" type="text/css" href="css/aui.css">
+    <link rel="stylesheet" type="text/css" href="css/weui.min.css">
+    <link rel="stylesheet" type="text/css" href="css/jquery-weui.min.css">
+    <title>手机验证码</title>
+</head>
+<body>
+    <header class="aui-bar aui-bar-nav" style="padding-top:25px;">
+        <a class="aui-pull-left" href="javascript:window.history.back()">
+            <span class="aui-iconfont aui-icon-left"></span>
+        </a>
+        <div class="aui-title">手机验证码</div>
+    </header>
+    <div>
+        <div class="weui-panel__hd">已发送验证码到您的手机：<span id="phone"></span></div>
+        <div class="weui-cells weui-cells_form">
+            <div class="weui-cell weui-cell_vcode" style="padding:0 10px; ">
+                <div class="weui-cell__hd">
+                    <label class="weui-label" style="width: 80px;font-size: 14px;">验证码</label>
+                </div>
+                <div class="weui-cell__bd">
+                    <input class="weui-input" type="tel" id="code" style="font-size: 14px;" placeholder="请输入验证码" maxlength="6">
+                </div>
+            </div>
+        </div>
+        <section class="aui-content-padded" style="margin-top: 30px;">
+            <div class="aui-btn aui-btn-block aui-btn-info" tapmode onclick="app.doNext()">验证</div>
+        </section>
+    </div>
+</body>
+</html>
+<script type="text/javascript" src="cordova.js"></script>
+<script type="text/javascript" src="js/lib/jquery-2.1.4.js"></script>
+<script type="text/javascript" src="js/lib/jquery-weui.js"></script>
+<script type="text/javascript" src="js/server.js"></script>
+<script type="text/javascript" src="js/bindcheck.js"></script>
\ No newline at end of file
diff --git a/www/index.html b/www/index.html
index 4afb0bf..576b5e9 100644
--- a/www/index.html
+++ b/www/index.html
@@ -26,4 +26,5 @@
 <script type="text/javascript" src="js/lib/jquery-weui.min.js"></script>
 <script type="text/javascript" src="js/server.js"></script>
 <script type="text/javascript">
+     window.localStorage.setItem("tabindex",1); 
 </script>
\ No newline at end of file
diff --git a/www/js/bill.js b/www/js/bill.js
index 4b0bca5..c0af3fd 100644
--- a/www/js/bill.js
+++ b/www/js/bill.js
@@ -9,6 +9,9 @@
         curpage = 1;
         this.loadBill(curpage)
     },
+    toBack: function (){
+        window.history.back();
+    },
     loadBill:function(pageno){
         $.showLoading("加载中");
         var param={
diff --git a/www/js/billdetail.js b/www/js/billdetail.js
index 057b106..3615234 100644
--- a/www/js/billdetail.js
+++ b/www/js/billdetail.js
@@ -8,6 +8,9 @@
     onDeviceReady: function() {
         this.loadBill()
     },
+    toBack: function (){
+        window.history.back();
+    },
     loadBill: function() {
         var refno = window.localStorage.getItem("currentrefno");
         if (isEmpty(refno)) {
diff --git a/www/js/bindcard.js b/www/js/bindcard.js
index 53ac0cf..e9cb86c 100644
--- a/www/js/bindcard.js
+++ b/www/js/bindcard.js
@@ -1,25 +1,58 @@
+var dict;
 var app = {
 
     // Application Constructor
     initialize: function() {
         document.addEventListener('deviceready', this.onDeviceReady.bind(this), false);
     },
-  
+
     onDeviceReady: function() {
         var uid = window.localStorage.getItem("uid");
-        var phone =  window.localStorage.getItem("phoneX");
-        if(!isEmpty(phone)){
-            $("#phone").val(phone)
-        }else{
-            phone =  window.localStorage.getItem("phone");
-            $("#phone").val(phone)
-        }
+        this.loadData();
+    },
+    loadData: function() {
+        $.showLoading("正在加载");
+        V1Idtypes(function(ok, ret) {
+            if (ok) {
+                $.hideLoading();
+                if (ret.code == 200) {
+                    dict = ret.idtypes;
+                    let keys = Object.keys(dict);
+                    let vals = Object.values(dict);
+                    console.log(keys, vals)
+                    var items=[];
+                    for(var key of keys){
+                        var bean = {
+                            "title":dict[key],
+                            "value":key
+                        }
+                        items.push(bean)
+                    }
+                    $("#idtype").val(items[0].title)
+                    $("#idtype").attr("data-values",items[0].value)
+                    $("#idtype").select({
+                      title: "请选择证件类型",
+                      items: items
+                    });
+                } else {
+                    $.alert(ret.msg, "错误");
+                }
+            } else {
+                $.hideLoading();
+                $.alert("请求失败了 " + ret.status + "，请稍后再试", "错误");
+            }
+        })
     },
     doNext: function() {
-        var code =  $("#code").val();
-        var cardnum =  $("#cardnum").val();
-        var name =  $("#name").val();
-        if(isEmpty(name)||isEmpty(code)||isEmpty(cardnum)){
+        var cardnum = $("#cardnum").val();
+        var name = $("#name").val();
+        var idno = $("#idno").val();
+        if (isEmpty(name) || isEmpty(cardnum)||isEmpty(idno)) {
+            return;
+        }
+        var idtype = $("#idtype").attr("data-values")
+        if(isEmpty(idtype)){
+            $.alert("请选择证件类型", "错误");
             return;
         }
         /*var agree = $("input[type=checkbox]:checked").val();
@@ -28,62 +61,37 @@
             return;
         }*/
         $.showLoading("正在处理");
-        var param={
-            "card":cardnum,
-            "code":code,
-            "name":name
+        var param = {
+            "cardno": cardnum,
+            "idtype": idtype,
+            "name": name,
+            "idno": idno
         }
-        V1Bindcard(param,function(ok,ret){
-            if(ok){
+        V1Bindcard(param, function(ok, ret) {
+            if (ok) {
                 $.hideLoading();
                 console.log(ret)
-                if(ret.code==200){
-                     window.localStorage.setItem("paypwdtype","new"); 
-                     window.localStorage.setItem("userid",ret.userid);
-                     window.localStorage.setItem("signed",ret.signed); 
-                     window.localStorage.setItem("name",name); 
-                     window.localStorage.setItem("paypwdset",ret.paypwdset); 
-                     if(ret.paypwdset){
-                        if(!isEmpty(ret.signed)&&signed=='yes'){
-                            window.location='main.html'
-                        }else{
-                            window.location='signxy.html'
-                        }
-                     }else{
-                        window.location="paypwdset.html";
-                     }
-                }else{
-                    if(ret.code==-1){
-                        $.alert(ret.msg, "提示",function(){
-                            window.location="main.html"
+                if (ret.code == 200) {
+                    window.localStorage.setItem("phoneX",ret.phonex);
+                    window.localStorage.setItem("name", name);
+                    window.localStorage.setItem("personid", ret.personid);
+                    window.localStorage.setItem("signed", ret.signed);
+                    window.localStorage.setItem("paypwdset", ret.paypwdset);
+                    window.location = "bindcheck.html";
+                } else {
+                    if (ret.code == -1) {
+                        $.alert(ret.msg, "提示", function() {
+                            window.location = "main.html"
                         });
-                    }else{
-                       $.alert(ret.msg, "错误");
+                    } else {
+                        $.alert(ret.msg, "错误");
                     }
-                } 
-            }else{
+                }
+            } else {
                 $.hideLoading();
-                $.alert("请求失败了 "+ret.status+"，请稍后再试", "错误");
-            }
-        })
-    },
-    getCode :function(){
-        $.showLoading("请求中");
-        V1Code(function(ok,ret){
-            if(ok){
-                $.hideLoading();
-                if(ret.code==200){
-                    $("#codebtn").attr("disabled","disabled")
-                    $("#codebtn").addClass("vcodedisabled")
-                    btnTime('codebtn');
-                }else{
-                    $.alert(ret.msg, "错误");
-                } 
-            }else{
-                $.hideLoading();
-                $.alert("请求失败了"+ret.status+"，请稍后再试", "错误");
+                $.alert("请求失败了 " + ret.status + "，请稍后再试", "错误");
             }
         })
     }
 };
-app.initialize();
+app.initialize();
\ No newline at end of file
diff --git a/www/js/bindcheck.js b/www/js/bindcheck.js
new file mode 100644
index 0000000..a4214fc
--- /dev/null
+++ b/www/js/bindcheck.js
@@ -0,0 +1,57 @@
+var dict;
+var app = {
+
+    // Application Constructor
+    initialize: function() {
+        document.addEventListener('deviceready', this.onDeviceReady.bind(this), false);
+    },
+    onDeviceReady: function() {
+        var phone = window.localStorage.getItem("phoneX");
+        if(!isEmpty(phone)){
+            $("#phone").text(phone)
+        }else{
+            phone =  window.localStorage.getItem("phone");
+            $("#phone").text(phone)
+        }
+    },
+    doNext: function() {
+        var code =  $("#code").val();
+        if(isEmpty(code)){
+            return;
+        }
+        var personid = window.localStorage.getItem("personid");
+        $.showLoading("正在处理");
+        var param={
+            "personid":personid,
+            "code":code,
+        }
+        V1Checkcode(param,function(ok,ret){
+            if(ok){
+                $.hideLoading();
+                console.log(ret)
+                if(ret.code==200){
+                    window.localStorage.setItem("paypwdtype", "new");
+                    window.localStorage.setItem("userid", personid);
+                    var signed =  window.localStorage.getItem("signed");
+                    var paypwdset =  window.localStorage.getItem("paypwdset");
+                    console.log(paypwdset)
+                    if (!paypwdset||'false'==paypwdset) {
+                        window.location = "paypwdset.html";
+                    } else {
+                        if (!isEmpty(signed) && signed == 'yes') {
+                            window.location = 'main.html'
+                        } else {
+                            window.location = 'signxy.html'
+                        }
+                    }
+                }else{
+                     $.alert(ret.msg, "错误");
+                } 
+            }else{
+                $.hideLoading();
+                $.alert("请求失败了"+ret.status+"，请稍后再试", "错误");
+            }
+        })
+    }
+};
+app.initialize();
\ No newline at end of file
diff --git a/www/js/card.js b/www/js/card.js
index 0c0a91e..8dc9675 100644
--- a/www/js/card.js
+++ b/www/js/card.js
@@ -4,17 +4,17 @@
     initialize: function() {
         document.addEventListener('deviceready', this.onDeviceReady.bind(this), false);
     },
-  
+
     onDeviceReady: function() {
         var uid = window.localStorage.getItem("uid");
-        
+
     },
     doNext: function() {
-        var pwd =  $("#pwd").val();
-        if(isEmpty(pwd)){
+        var pwd = $("#pwd").val();
+        if (isEmpty(pwd)) {
             return;
         }
-        if(pwd.length!=6){
+        if (pwd.length != 6) {
             $.alert("支付密码为6位数字", "提示");
             return;
         }
@@ -26,24 +26,26 @@
         }, function(ret) {
             if (ret.buttonIndex == 2) {
                 $.showLoading("正在处理");
-                var param={
-                    "paypwd":pwd
+                var param = {
+                    "paypwd": pwd
                 }
-                V1CardLost(param,function(ok,ret){
-                    if(ok){
+                V1CardLost(param, function(ok, ret) {
+                    if (ok) {
                         $.hideLoading();
-                        if(ret.code==200){
-                             $.alert("卡片挂失成功", "提示");
-                        }else{
+                        if (ret.code == 200) {
+                            $.alert("卡片挂失成功", "提示", function() {
+                                window.location = "main.html"
+                            });
+                        } else {
                             $.alert(ret.msg, "错误");
-                        } 
-                    }else{
+                        }
+                    } else {
                         $.hideLoading();
-                        $.alert("请求失败了"+ret.status+"，请稍后再试", "错误");
+                        $.alert("请求失败了" + ret.status + "，请稍后再试", "错误");
                     }
                 })
             }
         })
     }
 };
-app.initialize();
+app.initialize();
\ No newline at end of file
diff --git a/www/js/index.js b/www/js/index.js
index ba4ea86..112a927 100644
--- a/www/js/index.js
+++ b/www/js/index.js
@@ -41,9 +41,10 @@
                         if(ret.now-t>1000*60*10){
                              window.location = "login.html";
                         }else{
-                             
                              window.location = "main.html";
                         }
+                    }else{
+                        window.location = "login.html";
                     }
                 } else {
                     //alert('无法请求到服务器，请检查网络并稍后再试');
diff --git a/www/js/main.js b/www/js/main.js
index 87d6f53..3b01a2a 100644
--- a/www/js/main.js
+++ b/www/js/main.js
@@ -2,6 +2,7 @@
 
     // Application Constructor
     initialize: function() {
+        this.initTab();
         document.addEventListener('deviceready', this.onDeviceReady.bind(this), false);
     },
 
@@ -42,19 +43,47 @@
         });
         $('#secBtn').click(function() {
             app.checkBefore(function() {
-                window.location = "security.html";
+                app.checkOther(function() {
+                    window.location = "security.html";
+                })
             })
         });
         $('#usersec').click(function() {
             app.checkBefore(function() {
-                window.location = "security.html";
+                app.checkOther(function() {
+                    window.location = "security.html";
+                })
             })
         });
         this.initData();
     },
+    initTab:function(){
+        $("#maincontent").css("top", $("#maintop").height())
+        var tab = new auiTab({
+            element: document.getElementById("footer"),
+        }, function(ret) {
+            window.localStorage.setItem("tabindex",ret.index); 
+            
+            changeTab(ret.index);
+        });
+        var tabindex =  window.localStorage.getItem("tabindex"); 
+        if(!tabindex||tabindex==0){
+            tabindex = 1
+        }
+        changeTab(tabindex);
+        tab.setActive(tabindex)
+        function changeTab(index){
+            if (index == 1) {
+                $("#main1").show();
+                $("#main2").hide();
+            } else if (index == 2) {
+                $("#main1").hide();
+                $("#main2").show();
+            }
+        }
+    },
     initData: function() {
         this.loadBill()
-
     },
     loadBill: function() {
         $("#loaddata").show()
@@ -122,7 +151,7 @@
         $("#loaddata").hide()
         $("#nodata").hide();
         $("#billcontent").show();
-        
+
     },
     initView: function() {
         var userid = window.localStorage.getItem("userid");
@@ -210,18 +239,18 @@
             }
         }
     },
-    toSign:function(){
+    toSign: function() {
         window.location = 'signxycheck.html'
     },
     toBillDetail: function(refno) {
         window.localStorage.setItem("currentrefno", refno);
         window.location = 'billdetail.html';
     },
-    toCard:function(){
+    toCard: function() {
         var userid = window.localStorage.getItem("userid");
         if (isEmpty(userid)) {
             window.location = 'bindcard.html'
-        }else{
+        } else {
             window.location = 'cardinfor.html'
         }
     }
diff --git a/www/js/server.js b/www/js/server.js
index 3194de9..94f7c65 100644
--- a/www/js/server.js
+++ b/www/js/server.js
@@ -6,6 +6,9 @@
 if (dev) {
     SERVER = "http://172.28.43.3:8099/payapi/mobileapi";
 }
+function V1Idtypes(callback) {
+    ajaxPost("/v1/idtypes", {}, callback)
+}
 function V1Cardinfor(callback) {
     ajaxPost("/v1/cardinfor", {}, callback)
 }
diff --git a/www/js/signxycheck.js b/www/js/signxycheck.js
index f97f3d4..4e52298 100644
--- a/www/js/signxycheck.js
+++ b/www/js/signxycheck.js
@@ -10,17 +10,23 @@
         $.showLoading("加载中");
         V1Bxy(function(ok, ret, err) {
             if (ok) {
-                $.hideLoading(); 
-                if(ret.code==200){
+                $.hideLoading();
+                if (ret.code == 200) {
                     $("#content").html(ret.page);
-                    if(isEmpty(ret.signed)||ret.signed!='yes'){
-                        $("#btn").show();   
-                        $("#content").css("bottom","135px");
-                    }else{
-                        $("#content").css("bottom","10px");
+                    if (isEmpty(ret.signed) || ret.signed != 'yes') {
+                        $("#btn").show();
+                        $("#content").css("bottom", "135px");
+                    } else {
+                        $("#content").css("bottom", "10px");
                     }
-                }else{
-                    $.alert(ret.msg, "错误");
+                } else {
+                    if (ret.code == -1) {
+                        $.alert(ret.msg, "提示", function() {
+                            window.location = 'bindcard.html'
+                        });
+                    } else {
+                        $.alert(ret.msg, "错误");
+                    }
                 }
             } else {
                 $.hideLoading();
@@ -28,28 +34,28 @@
             }
         })
     },
-    agreeXY:function(){
+    agreeXY: function() {
         var agree = $("input[type=checkbox]:checked").val();
-        if(isEmpty(agree)){
+        if (isEmpty(agree)) {
             $.alert("请同意签约代扣协议", "提示");
             return;
         }
         $.showLoading("正在请求");
-        var param={
-            "agree":agree
+        var param = {
+            "agree": agree
         }
-        V1Signbxy(param,function(ok, ret, err) {
+        V1Signbxy(param, function(ok, ret, err) {
             if (ok) {
-                $.hideLoading(); 
-                if(ret.code==200){
-                    window.localStorage.setItem("signed",ret.signed); 
-                    window.location="main.html";
-                }else{
+                $.hideLoading();
+                if (ret.code == 200) {
+                    window.localStorage.setItem("signed", ret.signed);
+                    window.location = "main.html";
+                } else {
                     $.alert(ret.msg, "错误");
                 }
             } else {
                 $.hideLoading();
-                $.alert("请求失败了:" + ret.status+"请稍后再试", "错误");
+                $.alert("请求失败了:" + ret.status + "请稍后再试", "错误");
             }
         })
     }
diff --git a/www/main.html b/www/main.html
index 57c416c..b6a2d8c 100644
--- a/www/main.html
+++ b/www/main.html
@@ -258,18 +258,6 @@
 <script type="text/javascript" src="js/server.js"></script>
 <script type="text/javascript" src="js/main.js"></script>
 <script type="text/javascript">
-var tab = new auiTab({
-    element: document.getElementById("footer"),
-}, function(ret) {
-    if (ret.index == 1) {
-        $("#main1").show();
-        $("#main2").hide();
-    } else if (ret.index == 2) {
-        $("#main1").hide();
-        $("#main2").show();
-    }
-});
-$("#maincontent").css("top", $("#maintop").height())
-</script>
 
+</script>
 </html>
\ No newline at end of file
diff --git a/www/register.html b/www/register.html
index 34e5998..640b3ee 100644
--- a/www/register.html
+++ b/www/register.html
@@ -15,7 +15,7 @@
 </head>
 <body>
     <header class="aui-bar aui-bar-nav" style="padding-top:25px;">
-        <a class="aui-pull-left" href="login.html">
+        <a class="aui-pull-left" href="javascript:window.history.back()">
             <span class="aui-iconfont aui-icon-left"></span>
         </a>
         <div class="aui-title">注册</div>
diff --git a/www/security.html b/www/security.html
index d9811ec..6994b22 100644
--- a/www/security.html
+++ b/www/security.html
@@ -15,7 +15,7 @@
 </head>
 <body>
     <header class="aui-bar aui-bar-nav" style="padding-top:25px;">
-        <a class="aui-pull-left" href="main.html">
+        <a class="aui-pull-left" href="javascript:window.history.go(-1)">
             <span class="aui-iconfont aui-icon-left"></span>
         </a>
         <div class="aui-title">账户安全</div>
