diff --git a/platforms/android/app/src/main/assets/www/js/bindcard.js b/platforms/android/app/src/main/assets/www/js/bindcard.js
index 0ee9d01..7af7d38 100644
--- a/platforms/android/app/src/main/assets/www/js/bindcard.js
+++ b/platforms/android/app/src/main/assets/www/js/bindcard.js
@@ -85,7 +85,7 @@
                     window.localStorage.setItem("signed", ret.signed);
                     window.localStorage.setItem("paypwdset", ret.paypwdset);
                     if(ret.signed=='yes'){
-                        window.location = "signsfp.html";
+                        window.location = "main.html"
                     }else{
                         window.location = "bindcheck.html";
                     }
diff --git a/platforms/android/app/src/main/assets/www/js/main.js b/platforms/android/app/src/main/assets/www/js/main.js
index 066334a..78b896f 100644
--- a/platforms/android/app/src/main/assets/www/js/main.js
+++ b/platforms/android/app/src/main/assets/www/js/main.js
@@ -260,10 +260,10 @@
         var userid = window.localStorage.getItem("userid");
         var signed = window.localStorage.getItem("signed");
         if (isEmpty(userid)) {
-            $("#userbank").text("未签约");
+            $("#userbank").text("未绑定");
             $("#userbank").css("color", "red")
         } else {
-            $("#userbank").text("已签约");
+            $("#userbank").text("已绑定");
             $("userbank").css("color", "#757575");
         }
         if (isEmpty(signed) || signed != 'yes') {
@@ -295,8 +295,8 @@
                 var cum = new auiDialog({});
                 var confirm = cum.alert({
                     title: "提示",
-                    msg: '为了不影响您正常使用相关功能，请先进行市民卡签约',
-                    buttons: ['取消', '去签约']
+                    msg: '为了不影响您正常使用相关功能，请先绑定银行卡',
+                    buttons: ['取消', '去绑卡']
                 }, function(ret) {
                     if (ret.buttonIndex == 2) {
                         window.location = 'bindcard.html'
diff --git a/platforms/android/app/src/main/assets/www/main.html b/platforms/android/app/src/main/assets/www/main.html
index e21d691..48c243e 100644
--- a/platforms/android/app/src/main/assets/www/main.html
+++ b/platforms/android/app/src/main/assets/www/main.html
@@ -14,24 +14,35 @@
         .aui-slide-node{
             background: transparent!important;
         }
+        .slide-img-frame{
+            padding:36px 30px 30px 30px
+        }
     </style>
 </head>
 <body>
     <div id="main1">
         <div id="maintop">
-            <div id="startslider" class="main" style="height: 240px;display: block;background: #ACEAF5;padding:36px 30px 30px 30px;">
+            <div id="startslider" class="main" style="height: 240px;display: block;">
                 <div class="aui-slide-wrap" >
                     <div class="aui-slide-node">
-                        <img  src="img/p1.png" />
+                        <div class="slide-img-frame" style="background-color: #ACEAF5">
+                            <img src="img/p1.png"  style="background-color: #ACEAF5"/>
+                        </div>
+                    </div>
+                    <div class="aui-slide-node">
+                        <div class="slide-img-frame" style="background-color: #357a8a">
+                            <img src="img/p2.png"  style="background-color: #357a8a"/>
+                        </div>
                     </div>
                     <div class="aui-slide-node ">
-                        <img src="img/p2.png"  />
+                        <div class="slide-img-frame" style="background-color: #a4e4d4">
+                            <img src="img/p3.png"  style="background-color: #a4e4d4"/>
+                        </div>
                     </div>
                     <div class="aui-slide-node ">
-                        <img src="img/p3.png"  />
-                    </div>
-                    <div class="aui-slide-node ">
-                        <img src="img/p4.png"  />
+                        <div class="slide-img-frame" style="background-color: #65abe7">
+                            <img src="img/p4.png"  style="background-color: #65abe7"/>
+                        </div>
                     </div>
                 </div>
                 <div class="aui-slide-page-wrap"><!--分页容器--></div>
@@ -112,7 +123,7 @@
                     </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="userbank"></div>
+                        <div class="aui-list-item-right" id="usersign"></div>
                     </div>
                 </li>
                 <!--<li class="aui-list-item" id="accsignbtn">-->
diff --git a/platforms/android/debug-signing.properties b/platforms/android/debug-signing.properties
index 7fc2a24..7944d40 100644
--- a/platforms/android/debug-signing.properties
+++ b/platforms/android/debug-signing.properties
@@ -1,6 +1,6 @@
 # This file is automatically generated.
 # Do not modify this file -- YOUR CHANGES WILL BE ERASED!
-key.store=/Users/shuwei/works2/cordova/dlapp/release-key.keystore
+key.store=C:\\workspace\\mobile\\release-key.keystore
 key.alias=dlapp-supwisdom
 key.store.password=kingstar
 key.alias.password=kingstar
diff --git a/www/cardinfor.html b/www/cardinfor.html
index 946108f..dc20345 100644
--- a/www/cardinfor.html
+++ b/www/cardinfor.html
@@ -42,8 +42,9 @@
             </div>
         </div>
         <div style="padding: 20px;margin-top: 40px;">
-                <a href="unsignedcheck.html" class="weui-btn weui-btn_warn">解除签约</a>
-            </div>  
+                <!--<a href="unsignedcheck.html" class="weui-btn weui-btn_warn">解除签约</a>-->
+                <a href="javascript:app.doNext()" class="weui-btn weui-btn_warn">解除签约</a>
+            </div>
     </div>
 </body>
 </html>
diff --git a/www/js/cardinfor.js b/www/js/cardinfor.js
index da6e04f..6361910 100644
--- a/www/js/cardinfor.js
+++ b/www/js/cardinfor.js
@@ -1,20 +1,20 @@
 var app = {
 
     // Application Constructor
-    initialize: function() {
+    initialize: function () {
         document.addEventListener('deviceready', this.onDeviceReady.bind(this), false);
     },
-  
-    onDeviceReady: function() {
+
+    onDeviceReady: function () {
         $.showLoading("加载中");
-        V1Cardinfor(function(ok, ret, err) {
+        V1Cardinfor(function (ok, ret, err) {
             if (ok) {
-                $.hideLoading(); 
-                if(ret.code==200){
+                $.hideLoading();
+                if (ret.code == 200) {
                     $("#name").text(ret.name);
                     $("#cardnum").text(ret.cardno);
                     $("#cardstatus").text(ret.cardstatus);
-                }else{
+                } else {
                     $.alert(ret.msg, "错误");
                 }
             } else {
@@ -23,29 +23,29 @@
             }
         })
     },
-    unBindcard: function(){
+    unBindcard: function () {
         var dialog = new auiDialog({})
         dialog.prompt({
-            title:"请输入支付密码",
-            text:'请输入支付密码',
-            buttons:['取消','确定']
-        },function(ret){
+            title: "请输入支付密码",
+            text: '请输入支付密码',
+            buttons: ['取消', '确定']
+        }, function (ret) {
             console.log(ret);
-            if(ret.buttonIndex == 2){
-                if(!isEmpty(ret.text)){
+            if (ret.buttonIndex == 2) {
+                if (!isEmpty(ret.text)) {
                     $.showLoading("正在请求");
                     var param = {
-                        "paypwd":ret.text
+                        "paypwd": ret.text
                     }
-                    V1Unbindcard(param,function(ok, ret, err) {
+                    V1Unbindcard(param, function (ok, ret, err) {
                         if (ok) {
-                            $.hideLoading(); 
-                            if(ret.code==200){
+                            $.hideLoading();
+                            if (ret.code == 200) {
                                 window.localStorage.removeItem("userid");
-                                $.alert('解绑成功', "提示", function() {
+                                $.alert('解绑成功', "提示", function () {
                                     window.location = 'main.html'
                                 });
-                            }else{
+                            } else {
                                 $.alert(ret.msg, "错误");
                             }
                         } else {
@@ -57,9 +57,30 @@
             }
         });
         var input = $(".aui-dialog-body").find("input");
-        if(input){
-            input.attr("type","password");
+        if (input) {
+            input.attr("type", "password");
         }
+    },
+    doNext: function () {
+        $.confirm('您正在进行解除签约操作，是否确定？', '解除签约确认',
+            function () {
+                V1UnSignbxy(null, function(ok, ret, err) {
+                    if (ok) {
+                        $.hideLoading();
+                        if (ret.code == 200) {
+                            window.localStorage.setItem("signed", ret.signed);
+                            $.alert('解除成功', "提示", function() {
+                                window.location = 'main.html'
+                            });
+                        } else {
+                            $.alert(ret.msg, "错误");
+                        }
+                    } else {
+                        $.hideLoading();
+                        $.alert("请求失败了:" + ret.status + "请稍后再试", "错误");
+                    }
+                })
+            });
     }
 };
 app.initialize();
diff --git a/www/main.html b/www/main.html
index d3bb142..48c243e 100644
--- a/www/main.html
+++ b/www/main.html
@@ -14,24 +14,35 @@
         .aui-slide-node{
             background: transparent!important;
         }
+        .slide-img-frame{
+            padding:36px 30px 30px 30px
+        }
     </style>
 </head>
 <body>
     <div id="main1">
         <div id="maintop">
-            <div id="startslider" class="main" style="height: 240px;display: block;background: #ACEAF5;padding:36px 30px 30px 30px;">
+            <div id="startslider" class="main" style="height: 240px;display: block;">
                 <div class="aui-slide-wrap" >
                     <div class="aui-slide-node">
-                        <img  src="img/p1.png" />
+                        <div class="slide-img-frame" style="background-color: #ACEAF5">
+                            <img src="img/p1.png"  style="background-color: #ACEAF5"/>
+                        </div>
+                    </div>
+                    <div class="aui-slide-node">
+                        <div class="slide-img-frame" style="background-color: #357a8a">
+                            <img src="img/p2.png"  style="background-color: #357a8a"/>
+                        </div>
                     </div>
                     <div class="aui-slide-node ">
-                        <img src="img/p2.png"  />
+                        <div class="slide-img-frame" style="background-color: #a4e4d4">
+                            <img src="img/p3.png"  style="background-color: #a4e4d4"/>
+                        </div>
                     </div>
                     <div class="aui-slide-node ">
-                        <img src="img/p3.png"  />
-                    </div>
-                    <div class="aui-slide-node ">
-                        <img src="img/p4.png"  />
+                        <div class="slide-img-frame" style="background-color: #65abe7">
+                            <img src="img/p4.png"  style="background-color: #65abe7"/>
+                        </div>
                     </div>
                 </div>
                 <div class="aui-slide-page-wrap"><!--分页容器--></div>
diff --git a/www/signsfp.html b/www/signsfp.html
deleted file mode 100644
index bc068f8..0000000
--- a/www/signsfp.html
+++ /dev/null
@@ -1,54 +0,0 @@
-<!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="main.html">
-        <span class="aui-iconfont aui-icon-left"></span>
-    </a>
-    <div class="aui-title">签约</div>
-</header>
-<div style="text-align: center;margin: 10px 0">
-    请输入验证码
-</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>
-<div style="margin: 10px 0">
-    <label for="agree" class="weui-agree" style="padding: .5em 5px .5em 15px;display: inline-block;">
-        <input id="agree" type="checkbox" class="weui-agree__checkbox" value="1" checked="checked">
-        <span class="weui-agree__text">
-                    我已仔细阅读并同意
-                </span>
-    </label>
-    <a href="signxy.html" style="font-size: 13px;">《市民卡免密代扣签约协议》</a>
-</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/bindcard.js"></script>
\ No newline at end of file
