diff --git a/www/js/bindcard.js b/www/js/bindcard.js
index e9cb86c..f7e91a2 100644
--- a/www/js/bindcard.js
+++ b/www/js/bindcard.js
@@ -21,15 +21,19 @@
                     let vals = Object.values(dict);
                     console.log(keys, vals)
                     var items=[];
+                    var selectItem=items[0];
                     for(var key of keys){
                         var bean = {
                             "title":dict[key],
                             "value":key
                         }
+                        if(key == 'idcard'){
+                            selectItem=bean;
+                        }
                         items.push(bean)
                     }
-                    $("#idtype").val(items[0].title)
-                    $("#idtype").attr("data-values",items[0].value)
+                    $("#idtype").val(selectItem.title)
+                    $("#idtype").attr("data-values",selectItem.value)
                     $("#idtype").select({
                       title: "请选择证件类型",
                       items: items
@@ -55,11 +59,10 @@
             $.alert("请选择证件类型", "错误");
             return;
         }
-        /*var agree = $("input[type=checkbox]:checked").val();
-        if(isEmpty(agree)){
-            $.alert("请同意用户协议与隐私条款", "提示");
-            return;
-        }*/
+        cardnum = cardnum.trim();
+        name = name.trim();
+        idno = idno.trim();
+        
         $.showLoading("正在处理");
         var param = {
             "cardno": cardnum,
@@ -72,8 +75,11 @@
                 $.hideLoading();
                 console.log(ret)
                 if (ret.code == 200) {
-                    window.localStorage.setItem("phoneX",ret.phonex);
                     window.localStorage.setItem("name", name);
+                    window.localStorage.setItem("cardno", cardnum);
+                    window.localStorage.setItem("idtype", idtype);
+                    window.localStorage.setItem("idno", idno);
+                    window.localStorage.setItem("phoneX",ret.phonex);
                     window.localStorage.setItem("personid", ret.personid);
                     window.localStorage.setItem("signed", ret.signed);
                     window.localStorage.setItem("paypwdset", ret.paypwdset);
diff --git a/www/js/bindcheck.js b/www/js/bindcheck.js
index a4214fc..32dba4c 100644
--- a/www/js/bindcheck.js
+++ b/www/js/bindcheck.js
@@ -13,6 +13,44 @@
             phone =  window.localStorage.getItem("phone");
             $("#phone").text(phone)
         }
+        $("#codebtn").attr("disabled","disabled")
+        $("#codebtn").addClass("vcodedisabled")
+        btnTime('codebtn');
+    },
+    getCode: function() {
+        var name = window.localStorage.getItem("name");
+        var cardno = window.localStorage.getItem("cardno");
+        var idtype = window.localStorage.getItem("idtype");
+        var idno = window.localStorage.getItem("idno");
+
+        $.showLoading("正在请求");
+        var param = {
+            "cardno": cardno,
+            "idtype": idtype,
+            "name": name,
+            "idno": idno
+        }
+        V1Bindcard(param, function(ok, ret) {
+            if (ok) {
+                $.hideLoading();
+                if (ret.code == 200) {
+                   $("#codebtn").attr("disabled","disabled")
+                   $("#codebtn").addClass("vcodedisabled")
+                   btnTime('codebtn');
+                } else {
+                    if (ret.code == -1) {
+                        $.alert(ret.msg, "提示", function() {
+                            window.location = "main.html"
+                        });
+                    } else {
+                        $.alert(ret.msg, "错误");
+                    }
+                }
+            } else {
+                $.hideLoading();
+                $.alert("请求失败了 " + ret.status + "，请稍后再试", "错误");
+            }
+        })
     },
     doNext: function() {
         var code =  $("#code").val();
diff --git a/www/js/main.js b/www/js/main.js
index 90977da..4d55357 100644
--- a/www/js/main.js
+++ b/www/js/main.js
@@ -99,6 +99,11 @@
                 })
             })*/
         });
+        $("#doorBtn").click(function(){
+            app.checkBefore(function() {
+                showRet(DOOR_URl);
+            })
+        })
         $('#usersec').click(function() {
             app.checkBefore(function() {
                 app.checkOther(function() {
@@ -107,6 +112,13 @@
             })
         });
         this.initData();
+        this.backBtn();
+    },
+    backBtn: function(){
+        document.addEventListener("backbutton", function(e){
+               e.preventDefault();
+               navigator.app.exitApp();
+            }, false);
     },
     initTab: function() {
         $("#maincontent").css("top", $("#maintop").height())
@@ -319,3 +331,47 @@
     }
 };
 app.initialize();
+
+function showRet(url) {
+        if(isEmpty(url)){
+            return;
+        }
+        var userid = window.localStorage.getItem("userid"); 
+        //if (url.indexOf("yy.dlsmk.cn")>=0) {
+            if(url.indexOf("?")>0){
+                url=url+'&userid='+userid;
+            }else{
+                url=url+'?userid='+userid;
+            }
+        //}
+        console.log(url)
+        var inAppBrowserRef = cordova.ThemeableBrowser.open(url, '_blank', {
+            statusbar: {
+                color: '#03a9f4ff'
+            },
+            toolbar: {
+                height: 44,
+                color: '#03a9f4ff'
+            },
+            title: {
+                color: '#ffffffff',
+                showPageTitle: true
+            },
+            backButton: {
+                image: 'back.png',
+                imagePressed: 'back.png',
+                align: 'left',
+                event: 'backPressed'
+            },
+            closeButton: {
+                image: 'close.png',
+                imagePressed: 'close.png',
+                align: 'left',
+                event: 'closePressed'
+            },
+            backButtonCanClose: true
+        }).addEventListener('closePressed', function(params){
+            inAppBrowserRef.close();
+            //window.location = "main.html"
+         });
+    }
diff --git a/www/js/qrcode.js b/www/js/qrcode.js
index 4664a9b..1b5a036 100644
--- a/www/js/qrcode.js
+++ b/www/js/qrcode.js
@@ -21,8 +21,8 @@
                     $.hideLoading();
                     var qrcode = new QRCode(document.getElementById("qrcode"), {
                       text: ret.qrcode,
-                      width: 150,
-                      height: 150,
+                      width: 200,
+                      height: 200,
                       colorDark: "#000000",
                       colorLight: "#ffffff",
                       correctLevel: QRCode.CorrectLevel.L
diff --git a/www/js/register.js b/www/js/register.js
index d10558e..f53220a 100644
--- a/www/js/register.js
+++ b/www/js/register.js
@@ -27,7 +27,6 @@
             "platform":device.name+","+device.platform+","+device.version,
             "uuid":device.uuid
         }
-        console.log(param)
         ICheckCode(param,function(ok,ret){
             if(ok){
                 $.hideLoading();
diff --git a/www/js/server.js b/www/js/server.js
index c8eb688..64a6da6 100644
--- a/www/js/server.js
+++ b/www/js/server.js
@@ -1,10 +1,11 @@
 var dev = false;
 var SERVER = "https://yy.dlsmk.cn/payapi/mobileapi";
+var DOOR_URl = "http://172.28.43.8:8099/door/app/appMintUIindex";//门禁服务地址
 var GLOBAL_TODAY="";
 var GLOBAL_YESTERDAY="";
 var CURRENT_INDEX=1;
 if (dev) {
-    SERVER = "http://172.28.201.70:10010/payapi/mobileapi";
+    SERVER = "http://172.28.43.7:8099/payapi/mobileapi";
 }
 
 function V1Qrcode(callback) {
diff --git a/www/js/signxycheck.js b/www/js/signxycheck.js
index 4e52298..dedeb88 100644
--- a/www/js/signxycheck.js
+++ b/www/js/signxycheck.js
@@ -1,11 +1,13 @@
 var db = null;
+var canCheck = false;
+var wait = 5;
 var app = {
-
     // Application Constructor
     initialize: function() {
         document.addEventListener('deviceready', this.onDeviceReady.bind(this), false);
+        canCheck = false;
+        wait=5;
     },
-
     onDeviceReady: function() {
         $.showLoading("加载中");
         V1Bxy(function(ok, ret, err) {
@@ -15,6 +17,7 @@
                     $("#content").html(ret.page);
                     if (isEmpty(ret.signed) || ret.signed != 'yes') {
                         $("#btn").show();
+                        app.checkTime();
                         $("#content").css("bottom", "135px");
                     } else {
                         $("#content").css("bottom", "10px");
@@ -35,6 +38,9 @@
         })
     },
     agreeXY: function() {
+        if(!canCheck){
+            return;
+        }
         var agree = $("input[type=checkbox]:checked").val();
         if (isEmpty(agree)) {
             $.alert("请同意签约代扣协议", "提示");
@@ -58,6 +64,20 @@
                 $.alert("请求失败了:" + ret.status + "请稍后再试", "错误");
             }
         })
+    },
+    checkTime: function(){
+      if (wait == 0) {
+        $("#signBtn").text("签约代扣协议");
+        $("#signBtn").addClass("aui-btn-info");
+        canCheck = true;
+      }else{
+        $("#signBtn").text(wait+"s 签约代扣协议");
+        wait--;
+         setTimeout(function() {
+              app.checkTime();
+            },1000)
+      }
     }
+
 };
 app.initialize();
\ No newline at end of file
