diff --git a/www/js/qrcode.js b/www/js/qrcode.js
index 35fe7a3..4664a9b 100644
--- a/www/js/qrcode.js
+++ b/www/js/qrcode.js
@@ -7,17 +7,58 @@
 
     onDeviceReady: function() {
         var uid = window.localStorage.getItem("token");
-        var qrcode = new QRCode(document.getElementById("qrcode"), {
-          text: uid,
-          width: 150,
-          height: 150,
-          colorDark : "#000000",
-          colorLight : "#ffffff",
-          correctLevel : QRCode.CorrectLevel.L
-      });
+        this.loadQrcode();
+        setInterval(function () {
+            window.location.reload();
+        },100000);
     },
-    toBillDetail :function(refno){
-        
+    loadQrcode: function() {
+        $.showLoading("加载中");
+        V1Qrcode(function(ok, ret) {
+            if (ok) {
+              console.log(ret)
+                if (ret.code == 200) {
+                    $.hideLoading();
+                    var qrcode = new QRCode(document.getElementById("qrcode"), {
+                      text: ret.qrcode,
+                      width: 150,
+                      height: 150,
+                      colorDark: "#000000",
+                      colorLight: "#ffffff",
+                      correctLevel: QRCode.CorrectLevel.L
+                    });
+                } else {
+                    $.hideLoading();
+                    $.alert("请求失败，请稍后再试", "错误");
+                }
+            } else {
+                $.hideLoading();
+                $.alert("请求失败了:" + ret.status + "请稍后再试", "错误");
+            }
+        })
+    },
+    refresh:function(){
+      V1Qrcode(function(ok, ret) {
+            if (ok) {
+                if (ret.code == 200) {
+                    $.hideLoading();
+                    var qrcode = new QRCode(document.getElementById("qrcode"), {
+                      text: ret.qrcode,
+                      width: 150,
+                      height: 150,
+                      colorDark: "#000000",
+                      colorLight: "#ffffff",
+                      correctLevel: QRCode.CorrectLevel.L
+                    });
+                } else {
+                    $.hideLoading();
+                    $.alert("请求失败，请稍后再试", "错误");
+                }
+            } else {
+                $.hideLoading();
+                $.alert("请求失败了:" + ret.status + "请稍后再试", "错误");
+            }
+        })
     }
 };
 app.initialize();
\ No newline at end of file
diff --git a/www/js/security.js b/www/js/security.js
index 3586930..f12a1cc 100644
--- a/www/js/security.js
+++ b/www/js/security.js
@@ -4,11 +4,7 @@
     initialize: function() {
         document.addEventListener('deviceready', this.onDeviceReady.bind(this), false);
     },
-  
     onDeviceReady: function() {
-        var uid = window.localStorage.getItem("uid");
-        var phone =  window.localStorage.getItem("phoneX");
-        
     },
     editPwd: function() {
        window.location = "editpwd.html";
@@ -19,6 +15,13 @@
     logout:function(){
         window.localStorage.removeItem("token");
         window.location = "login.html";
+    },
+    loginByTouchId: function() {
+       Fingerprint.isAvailable(function(result){
+            alert("Fingerprint available");
+       }, function(message){
+            alert(message);
+       });
     }
 };
 app.initialize();
diff --git a/www/js/server.js b/www/js/server.js
index 94f7c65..2bd6a73 100644
--- a/www/js/server.js
+++ b/www/js/server.js
@@ -1,11 +1,14 @@
 var dev = true;
-var SERVER = "";
+var SERVER = "http://ykt.supwisdom.com:10010/payapi/mobileapi";
 var GLOBAL_TODAY="";
 var GLOBAL_YESTERDAY="";
 var CURRENT_INDEX=1;
 if (dev) {
     SERVER = "http://172.28.43.3:8099/payapi/mobileapi";
 }
+function V1Qrcode(callback) {
+    ajaxPost("/v1/qrcode", {}, callback)
+}
 function V1Idtypes(callback) {
     ajaxPost("/v1/idtypes", {}, callback)
 }
