diff --git a/platforms/android/app/build.gradle b/platforms/android/app/build.gradle
index 9a325ca..9bb1444 100644
--- a/platforms/android/app/build.gradle
+++ b/platforms/android/app/build.gradle
@@ -174,8 +174,8 @@
         ndk {
             abiFilters "armeabi"
         }
-        versionCode 12
-        versionName '1.3.8'
+        versionCode 13
+        versionName '1.4.0'
         targetSdkVersion 28
     }
     lintOptions {
diff --git a/platforms/android/app/src/main/assets/www/bindcard.html b/platforms/android/app/src/main/assets/www/bindcard.html
index 8d2ee2f..ec64898 100644
--- a/platforms/android/app/src/main/assets/www/bindcard.html
+++ b/platforms/android/app/src/main/assets/www/bindcard.html
@@ -11,14 +11,14 @@
     <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>
+    <title>绑定市民卡</title>
 </head>
 <body>
     <header class="aui-bar aui-bar-nav" style="padding-top:25px;">
         <a class="aui-pull-left" href="main.html">
             <span class="aui-iconfont aui-icon-left"></span>
         </a>
-        <div class="aui-title">绑定银行卡</div>
+        <div class="aui-title">绑定市民卡</div>
     </header>
     <div>
         <div class="weui-cells__title">市民卡信息</div>
diff --git a/platforms/android/app/src/main/assets/www/dobind.html b/platforms/android/app/src/main/assets/www/dobind.html
index 6d377b9..4c40050 100644
--- a/platforms/android/app/src/main/assets/www/dobind.html
+++ b/platforms/android/app/src/main/assets/www/dobind.html
@@ -11,14 +11,14 @@
     <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>
+    <title>绑定市民卡</title>
 </head>
 <body>
     <header class="aui-bar aui-bar-nav" style="padding-top:25px;">
         <a class="aui-pull-left" href="bindcard.html">
             <span class="aui-iconfont aui-icon-left"></span>
         </a>
-        <div class="aui-title">绑定银行卡</div>
+        <div class="aui-title">绑定市民卡</div>
     </header>
     <div>
         <div class="weui-cells__title">验证市民卡预留的手机号</div>
diff --git a/platforms/android/app/src/main/assets/www/js/index.js b/platforms/android/app/src/main/assets/www/js/index.js
index 5f48d1e..82aa5bb 100644
--- a/platforms/android/app/src/main/assets/www/js/index.js
+++ b/platforms/android/app/src/main/assets/www/js/index.js
@@ -25,16 +25,15 @@
     },
 
     onDeviceReady: function() {
-        debugger;
         var firstload = window.localStorage.getItem("firstload");
-       if(isEmpty(firstload)||firstload!='yes'){
+       /*if(isEmpty(firstload)||firstload!='yes'){
          app.toPage("startload.html")
          return;
-       }
+       }*/
         var uid = window.localStorage.getItem("token");
         if (isEmpty(uid)) {
             //window.location = "login.html";
-            toPage("login.html")
+            this.toPage("login.html")
         } else {
             //尝试登陆
             V1Infor(function(ok, ret) {
@@ -69,7 +68,7 @@
         setTimeout(function() {
            //window.location=page; 
             window.location=page; 
-        },2000)
+        },1000)
     }
 };
 app.initialize();
\ No newline at end of file
diff --git a/platforms/android/app/src/main/assets/www/js/lib/aui-slide.js b/platforms/android/app/src/main/assets/www/js/lib/aui-slide.js
index 2f44157..f2b79b3 100644
--- a/platforms/android/app/src/main/assets/www/js/lib/aui-slide.js
+++ b/platforms/android/app/src/main/assets/www/js/lib/aui-slide.js
@@ -8,7 +8,7 @@
  */
 (function(window) {
 	"use strict";
-
+    var autoInderval;
 	var translateVal,
 		firstTouchX,
 		firstTouchY,
@@ -87,7 +87,7 @@
 				this.createPagination(0);
 				this.setPageDotPosition();
 			}
-			if(this.options.autoPlay > 500 && this.loop){
+			if(this.options.autoPlay > 500){
 				this.autoPlay(0);
 			}
 			this.slideWrap.addEventListener('touchstart', this.touchStart.bind(this), false);
@@ -104,13 +104,18 @@
 	// 自动播放
 	auiSlide.prototype.autoPlay = function (index) {
 		var self = this;
-		setInterval(function(){
+		autoInderval = setInterval(function(){
 			self.slideTo(self.getCircle(self.index-1), -self.slideWrapWidth, 0);
 	        self.slideTo(self.getCircle(self.index+2), self.slideWrapWidth, 0);
 	        self.slideTo(self.index, -self.slideWrapWidth, self.options.speed);
 	        self.slideTo(self.getCircle(self.index+1), 0, self.options.speed);
 	        self.index = self.getCircle(self.index+1);
 	        self.setPaginationActive(self.index);
+	        if((self.index+1)==self.pageCount()){
+	        	if(!self.options.loop){
+	        		clearInterval(autoInderval);
+	        	}
+	        }
 		}, self.options.autoPlay)
 	};
 	// 设置当前分页
diff --git a/platforms/android/app/src/main/assets/www/js/server.js b/platforms/android/app/src/main/assets/www/js/server.js
index 5854db6..c3dc21c 100644
--- a/platforms/android/app/src/main/assets/www/js/server.js
+++ b/platforms/android/app/src/main/assets/www/js/server.js
@@ -2,10 +2,11 @@
 var SERVER = "https://yy.dlsmk.cn/payapi/mobileapi";
 var DOOR_URl = "https://yy.dlsmk.cn/door/app/appMintUIindex";//门禁服务地址
 var GLOBAL_TODAY="";
+var BASE_URL="https://yy.dlsmk.cn";
 var GLOBAL_YESTERDAY="";
 var CURRENT_INDEX=1;
 if (dev) {
-    SERVER = "http://yy.dlsmk.cn:8080/payapi/mobileapi";
+    SERVER = "http://172.28.43.7:8099/payapi/mobileapi";
 }
 function V1Bindcardcode(param,callback) {
     ajaxPost("/v1/bindcardcode", param, callback)
diff --git a/platforms/android/app/src/main/assets/www/main.html b/platforms/android/app/src/main/assets/www/main.html
index b18c386..6a35e73 100644
--- a/platforms/android/app/src/main/assets/www/main.html
+++ b/platforms/android/app/src/main/assets/www/main.html
@@ -125,7 +125,7 @@
                     <!--</div>-->
                 <!--</li>-->
             </ul>
-            <ul class="aui-list aui-list-in">
+            <ul class="aui-list aui-list-in aui-margin-b-15">
                 <li class="aui-list-item" id="usersec">
                     <div class="aui-list-item-label-icon">
                         <i class="aui-iconfont aui-icon-lock aui-text-info"></i>
@@ -135,6 +135,18 @@
                     </div>
                 </li>
             </ul>
+             <ul class="aui-list aui-list-in">
+                <li class="aui-list-item" id="usersec"  onclick="app.verisonCheck()">
+                    <div class="aui-list-item-label-icon">
+                        <i class="aui-iconfont aui-icon-info aui-text-info"></i>
+                    </div>
+                    <div class="aui-list-item-inner aui-list-item-arrow">
+                        <div class="aui-list-item-title">版本检测</div>
+                        <div class="aui-list-item-right" id="versioncheck">
+                        </div>
+                    </div>
+                </li>
+            </ul>
             <div style="padding: 20px;margin-top: 40px;">
                 <a href="javascript:app.logout();" class="weui-btn weui-btn_warn">退出登录</a>
             </div>
diff --git a/www/bindcard.html b/www/bindcard.html
index 8d2ee2f..ec64898 100644
--- a/www/bindcard.html
+++ b/www/bindcard.html
@@ -11,14 +11,14 @@
     <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>
+    <title>绑定市民卡</title>
 </head>
 <body>
     <header class="aui-bar aui-bar-nav" style="padding-top:25px;">
         <a class="aui-pull-left" href="main.html">
             <span class="aui-iconfont aui-icon-left"></span>
         </a>
-        <div class="aui-title">绑定银行卡</div>
+        <div class="aui-title">绑定市民卡</div>
     </header>
     <div>
         <div class="weui-cells__title">市民卡信息</div>
diff --git a/www/cardinfor.html b/www/cardinfor.html
index dc20345..dfaf4b2 100644
--- a/www/cardinfor.html
+++ b/www/cardinfor.html
@@ -11,14 +11,14 @@
     <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>
+    <title>市民卡</title>
 </head>
 <body>
     <header class="aui-bar aui-bar-nav" style="padding-top:25px;">
         <a class="aui-pull-left" href="main.html">
             <span class="aui-iconfont aui-icon-left"></span>
         </a>
-        <div class="aui-title">银行卡</div>
+        <div class="aui-title">市民卡</div>
     </header>
     <div>
         <div class="weui-cells">
diff --git a/www/dobind.html b/www/dobind.html
index 6d377b9..4c40050 100644
--- a/www/dobind.html
+++ b/www/dobind.html
@@ -11,14 +11,14 @@
     <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>
+    <title>绑定市民卡</title>
 </head>
 <body>
     <header class="aui-bar aui-bar-nav" style="padding-top:25px;">
         <a class="aui-pull-left" href="bindcard.html">
             <span class="aui-iconfont aui-icon-left"></span>
         </a>
-        <div class="aui-title">绑定银行卡</div>
+        <div class="aui-title">绑定市民卡</div>
     </header>
     <div>
         <div class="weui-cells__title">验证市民卡预留的手机号</div>
diff --git a/www/img/icon_meeting.png b/www/img/icon_meeting.png
new file mode 100644
index 0000000..904d918
--- /dev/null
+++ b/www/img/icon_meeting.png
Binary files differ
diff --git a/www/img/icon_qj.png b/www/img/icon_qj.png
new file mode 100644
index 0000000..896b13a
--- /dev/null
+++ b/www/img/icon_qj.png
Binary files differ
diff --git a/www/js/index.js b/www/js/index.js
index 5f48d1e..82aa5bb 100644
--- a/www/js/index.js
+++ b/www/js/index.js
@@ -25,16 +25,15 @@
     },
 
     onDeviceReady: function() {
-        debugger;
         var firstload = window.localStorage.getItem("firstload");
-       if(isEmpty(firstload)||firstload!='yes'){
+       /*if(isEmpty(firstload)||firstload!='yes'){
          app.toPage("startload.html")
          return;
-       }
+       }*/
         var uid = window.localStorage.getItem("token");
         if (isEmpty(uid)) {
             //window.location = "login.html";
-            toPage("login.html")
+            this.toPage("login.html")
         } else {
             //尝试登陆
             V1Infor(function(ok, ret) {
@@ -69,7 +68,7 @@
         setTimeout(function() {
            //window.location=page; 
             window.location=page; 
-        },2000)
+        },1000)
     }
 };
 app.initialize();
\ No newline at end of file
diff --git a/www/js/lib/aui-slide.js b/www/js/lib/aui-slide.js
index 2f44157..f2b79b3 100644
--- a/www/js/lib/aui-slide.js
+++ b/www/js/lib/aui-slide.js
@@ -8,7 +8,7 @@
  */
 (function(window) {
 	"use strict";
-
+    var autoInderval;
 	var translateVal,
 		firstTouchX,
 		firstTouchY,
@@ -87,7 +87,7 @@
 				this.createPagination(0);
 				this.setPageDotPosition();
 			}
-			if(this.options.autoPlay > 500 && this.loop){
+			if(this.options.autoPlay > 500){
 				this.autoPlay(0);
 			}
 			this.slideWrap.addEventListener('touchstart', this.touchStart.bind(this), false);
@@ -104,13 +104,18 @@
 	// 自动播放
 	auiSlide.prototype.autoPlay = function (index) {
 		var self = this;
-		setInterval(function(){
+		autoInderval = setInterval(function(){
 			self.slideTo(self.getCircle(self.index-1), -self.slideWrapWidth, 0);
 	        self.slideTo(self.getCircle(self.index+2), self.slideWrapWidth, 0);
 	        self.slideTo(self.index, -self.slideWrapWidth, self.options.speed);
 	        self.slideTo(self.getCircle(self.index+1), 0, self.options.speed);
 	        self.index = self.getCircle(self.index+1);
 	        self.setPaginationActive(self.index);
+	        if((self.index+1)==self.pageCount()){
+	        	if(!self.options.loop){
+	        		clearInterval(autoInderval);
+	        	}
+	        }
 		}, self.options.autoPlay)
 	};
 	// 设置当前分页
diff --git a/www/js/mainmenu.js b/www/js/mainmenu.js
index a0e4fca..eacec44 100644
--- a/www/js/mainmenu.js
+++ b/www/js/mainmenu.js
@@ -74,12 +74,17 @@
                 })
             })
         });
+        var userid = window.localStorage.getItem("userid");
         $('#qrcodeBtn1').click(function() {
-            app.checkBefore(function() {
-                app.checkOther(function() {
-                    window.location = "qrcode.html";
-                })
-            })
+            showRet("https://yy.dlsmk.cn/wisdompolice/app/doorappvisitor?custid="+userid);
+        });
+        
+        $('#qingjiaBtn').click(function() {
+            
+            //window.location = "https://yy.dlsmk.cn/wisdompolice/app/doorappindex?custid="+userid;
+        });
+        $('#accessBtn').click(function() {
+            //window.location = "https://yy.dlsmk.cn/wisdompolice/app/doorappvisitor?custid="+userid;
         });
         /*$('#cardBtn').click(function() {
             app.checkBefore(function() {
@@ -114,6 +119,7 @@
         })*/
         $("#moreFuncBtn").click(function(){
             window.location = "more.html";
+            //showRet("https://yy.dlsmk.cn/wisdompolice/app/doorappindex?custid="+userid);
         })
         $('#usersec').click(function() {
             app.checkBefore(function() {
@@ -191,7 +197,7 @@
             "pageShow":true,
             "autoPlay":3000,
             "pageStyle":'dot',
-            "loop":false,
+            "loop":true,
             'dotPosition':'center',
             currentPage:currentFun
         });
@@ -207,12 +213,16 @@
         //$("#nodata").hide();
         var param = {
             "pageno": 1,
+            "type":"police",
             "platform":device.platform
         }
         V1Bills(param, function(ok, ret) {
             if (ok) {
-                console.log(ret)
                 if (ret.code == 200) {
+                    console.log(ret)
+                    //ret.version='1.3.9';
+                    //ret.versionmsg='新版本';
+                    //ret.versionurl='https://yy.dlsmk.cn/app/download/wisdompolice.apk';
                     app.checkVersion(ret.version,ret.minversion,ret.versionmsg,ret.versionurl);
                     //app.checkVersion("1.3.9","1","new func","https://shouji.baidu.com/software/26706357.html");
                     //$("#maingt").text(ret.t + "！")
@@ -256,6 +266,7 @@
             //alert(version);
             //alert(version);
             if(ver>version){
+                $("#versioncheck").html('<div class="aui-dot" style="position:relative;top:0; right:0;display:inline-block;"></div>新版本'+ver);
                 var cum = new auiDialog({});
                 var confirm = cum.alert({
                     title: "有新的版本",
@@ -263,9 +274,12 @@
                     buttons: ['取消', '去更新']
                 }, function(ret) {
                     if (ret.buttonIndex == 2) {
-                       cordova.InAppBrowser.open(url, '_system', 'location=no,toolbar=yes,toolbarposition=top,closebuttoncaption=关闭');
+                       //cordova.InAppBrowser.open(url, '_system', 'location=no,toolbar=yes,toolbarposition=top,closebuttoncaption=关闭');
+                       window.open(url,"_system",'');
                     }
                 })  
+            }else{
+                $("#versioncheck").html('已是最新版'+version);
             }
         });
     },
@@ -396,6 +410,26 @@
     logout:function(){
         window.localStorage.removeItem("token");
         window.location = "login.html";
+    },
+    verisonCheck:function(){
+        var param = {
+            "pageno": 1,
+            "type":"police",
+            "platform":device.platform
+        }
+        V1Bills(param, function(ok, ret) {
+            if (ok) {
+                if (ret.code == 200) {
+                    console.log(ret)
+                    //ret.version='1.3.9';
+                    //ret.versionmsg='新版本';
+                    //ret.versionurl='https://yy.dlsmk.cn/app/download/wisdompolice.apk';
+                    app.checkVersion(ret.version,ret.minversion,ret.versionmsg,ret.versionurl);
+                } else {
+                }
+            } else {
+            }
+        })
     }
 };
 app.initialize();
@@ -426,20 +460,17 @@
                 showPageTitle: true
             },
             backButton: {
-                image: 'back.png',
-                imagePressed: 'back.png',
+                wwwImage: 'img/back.png',
+                wwwImagePressed: 'img/back.png',
                 align: 'left',
                 event: 'backPressed'
             },
-            closeButton: {
-                image: 'close.png',
-                imagePressed: 'close.png',
-                align: 'left',
-                event: 'closePressed'
-            },
             backButtonCanClose: true
-        }).addEventListener('closePressed', function(params){
+        }).addEventListener('backPressed', function(e) {
+            //alert('back pressed');
+        }).addEventListener('closePressed', function(e) {
+            //alert('closePressed pressed');
             inAppBrowserRef.close();
-            //window.location = "main.html"
-         });
+            window.location = "main.html"
+        });
     }
diff --git a/www/js/more.js b/www/js/more.js
new file mode 100644
index 0000000..26b18f2
--- /dev/null
+++ b/www/js/more.js
@@ -0,0 +1,66 @@
+var app = {
+
+    // Application Constructor
+    initialize: function() {
+        document.addEventListener('deviceready', this.onDeviceReady.bind(this), false);
+    },
+    
+    onDeviceReady: function() {
+        var userid = window.localStorage.getItem("userid");
+        $('#moreBtn3').click(function() {
+            window.location = "bill.html";
+        });
+        $("#moreBtn1").click(function(){
+            //window.location = "more.html";
+            showRet("https://yy.dlsmk.cn/wisdompolice/app/doorappindex?custid="+userid);
+        })
+        $("#moreBtn2").click(function(){
+            //window.location = "more.html";
+            //showRet("https://yy.dlsmk.cn/wisdompolice/app/doorappindex?custid="+userid);
+            alert("暂未开通");
+        })
+    },
+   
+};
+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: {
+                wwwImage: 'img/back.png',
+                wwwImagePressed: 'img/back.png',
+                align: 'left',
+                event: 'backPressed'
+            },
+            backButtonCanClose: true
+        }).addEventListener('backPressed', function(e) {
+            //alert('back pressed');
+        }).addEventListener('closePressed', function(e) {
+            //alert('closePressed pressed');
+            inAppBrowserRef.close();
+            window.location = "main.html"
+        });
+    }
diff --git a/www/js/server.js b/www/js/server.js
index 5854db6..c3dc21c 100644
--- a/www/js/server.js
+++ b/www/js/server.js
@@ -2,10 +2,11 @@
 var SERVER = "https://yy.dlsmk.cn/payapi/mobileapi";
 var DOOR_URl = "https://yy.dlsmk.cn/door/app/appMintUIindex";//门禁服务地址
 var GLOBAL_TODAY="";
+var BASE_URL="https://yy.dlsmk.cn";
 var GLOBAL_YESTERDAY="";
 var CURRENT_INDEX=1;
 if (dev) {
-    SERVER = "http://yy.dlsmk.cn:8080/payapi/mobileapi";
+    SERVER = "http://172.28.43.7:8099/payapi/mobileapi";
 }
 function V1Bindcardcode(param,callback) {
     ajaxPost("/v1/bindcardcode", param, callback)
diff --git a/www/main.html b/www/main.html
index b18c386..6a35e73 100644
--- a/www/main.html
+++ b/www/main.html
@@ -125,7 +125,7 @@
                     <!--</div>-->
                 <!--</li>-->
             </ul>
-            <ul class="aui-list aui-list-in">
+            <ul class="aui-list aui-list-in aui-margin-b-15">
                 <li class="aui-list-item" id="usersec">
                     <div class="aui-list-item-label-icon">
                         <i class="aui-iconfont aui-icon-lock aui-text-info"></i>
@@ -135,6 +135,18 @@
                     </div>
                 </li>
             </ul>
+             <ul class="aui-list aui-list-in">
+                <li class="aui-list-item" id="usersec"  onclick="app.verisonCheck()">
+                    <div class="aui-list-item-label-icon">
+                        <i class="aui-iconfont aui-icon-info aui-text-info"></i>
+                    </div>
+                    <div class="aui-list-item-inner aui-list-item-arrow">
+                        <div class="aui-list-item-title">版本检测</div>
+                        <div class="aui-list-item-right" id="versioncheck">
+                        </div>
+                    </div>
+                </li>
+            </ul>
             <div style="padding: 20px;margin-top: 40px;">
                 <a href="javascript:app.logout();" class="weui-btn weui-btn_warn">退出登录</a>
             </div>
diff --git a/www/more.html b/www/more.html
index f9aef06..daecace 100644
--- a/www/more.html
+++ b/www/more.html
@@ -11,24 +11,44 @@
     <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>
+    <title>更多</title>
 </head>
-<body style="background: #fff"  >
+
+<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="main.html">
             <span class="aui-iconfont aui-icon-left"></span>
         </a>
-        <div class="aui-title">更多功能</div>
+        <div class="aui-title">更多</div>
     </header>
-    <section class="aui-content">
-         <div class="weui-loadmore weui-loadmore_line"   >
-            <span class="weui-loadmore__tips" style="background: transparent;" >敬请期待</span>
+    <section class="aui-grid aui-margin-b-15">
+        <p style="padding:10px;color:#000;font-size: 0.8rem">办公</p>
+        <div class="aui-row">
+            <div class="aui-col-xs-4" id="moreBtn1">
+               <div class="center-in"><img src="img/icon_qj.png" style="width:28px;height: 28px"></div>
+               <div class="aui-grid-label" style="margin-top:10px;">请假</div>
+            </div>
+            <div class="aui-col-xs-4" id="moreBtn2">
+               <div class="center-in"><img src="img/icon_meeting.png" style="width:28px;height: 28px"></div>
+               <div class="aui-grid-label" style="margin-top:10px;">会议</div>
+            </div>
+        </div>
+    </section>
+    <section class="aui-grid">
+        <p style="padding:10px;color:#000;font-size: 0.8rem">查询</p>
+        <div class="aui-row">
+            <div class="aui-col-xs-4" id="moreBtn3">
+               <div class="center-in"><img src="img/icon_bill.png" style="width:28px;height: 28px"></div>
+               <div class="aui-grid-label" style="margin-top:10px;">账单</div>
+            </div>
         </div>
     </section>
 </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/lib/qrcode.min.js"></script>
 <script type="text/javascript" src="js/server.js"></script>
+<script type="text/javascript" src="js/more.js"></script>
\ No newline at end of file
diff --git a/www/startload.html b/www/startload.html
index 925feff..7e7b87a 100644
--- a/www/startload.html
+++ b/www/startload.html
@@ -56,7 +56,7 @@
             "pageShow":true,
             "autoPlay":3000,
             "pageStyle":'dot',
-            "loop":true,
+            "loop":false,
             'dotPosition':'center',
             currentPage:currentFun
         })
