diff --git a/pages/bindcard/bindcard.js b/pages/bindcard/bindcard.js
index dc76332..8fb93b7 100644
--- a/pages/bindcard/bindcard.js
+++ b/pages/bindcard/bindcard.js
@@ -169,7 +169,6 @@
     wx.$doPost('/v1/bindcard', param, function(ok, ret) {
       wx.hideLoading();
       if (ok) {
-        
         console.log(ret)
         if (ret.data.code == 200) {
           wx.setStorageSync("name", name);
@@ -180,6 +179,12 @@
           wx.setStorageSync("personid", ret.data.personid);
           wx.setStorageSync("signed", ret.data.signed);
           wx.setStorageSync("paypwdset", ret.data.paypwdset);
+          var signed = wx.getStorageSync("signed");
+          if (!wx.$isEmpty(signed) && signed == 'yes') {
+            wx.navigateTo({
+              url: '../index/index',
+            })
+          }
           wx.navigateTo({
             url: '../bindcheck/bindcheck',
           })
diff --git a/pages/bindcheck/bindcheck.js b/pages/bindcheck/bindcheck.js
index 3ca4c4c..c9f97eb 100644
--- a/pages/bindcheck/bindcheck.js
+++ b/pages/bindcheck/bindcheck.js
@@ -11,7 +11,7 @@
     sendColor: 'rgb(124, 255, 112)',
     snsMsgWait: 30,
     smsFlag: true,
-   
+    privacyCheck:''
   },
 
   /**
@@ -35,6 +35,7 @@
     }
   },
 
+
   /**
    * 生命周期函数--监听页面初次渲染完成
    */
@@ -88,46 +89,43 @@
   onShareAppMessage: function() {
 
   },
+  checkboxChange:function(e){
+    console.log(e.detail.value);
+    this.setData({
+      privacyCheck: e.detail.value
+    })
+  },
+  showXy:function(){
+    wx.navigateTo({
+      url: '../signxy/signxy',
+    })
+  },
   doNext: function () {
     var code = this.data.code;
     if (wx.$isEmpty(code)) {
       return;
     }
 
-    var personid = wx.getStorageSync("personid");
-    
-    var param = {
-      "personid": personid,
-      "code": code,
+    var agree =this.data.privacyCheck;
+    if (wx.$isEmpty(agree)) {
+      wx.showModal({
+        title: '提示',
+        content: '请同意民卡免密代扣签约协议',
+      })
+      return;
     }
-    wx.$doPost('/v1/checkcode',param, function (ok, ret) {
+    var personid = wx.getStorageSync("personid");
+    var param={
+      "agree":code
+  }
+    wx.$doPost('/v1/signbxy',param, function (ok, ret) {
       if (ok) {
-     
-        console.log(ret)
         if (ret.data.code == 200) {
-          wx.setStorageSync("paypwdtype", "new");
           wx.setStorageSync("userid", personid);
-          var signed = wx.getStorageSync("signed");
-          var paypwdset = wx.getStorageSync("paypwdset");
-          console.log(paypwdset)
-          if (!paypwdset || 'false' == paypwdset) {
-            wx.navigateTo({
-              url: '../paypwdset/paypwdset',
-            })
-           
-          } else {
-            if (!wx.$isEmpty(signed) && signed == 'yes') {
-              wx.navigateTo({
-                url: '../index/index',
-              })
-          
-            } else {
-              wx.navigateTo({
-                url: '../signxy/signxy',
-              })
-          
-            }
-          }
+          wx.setStorageSync("signed", ret.data.signed);
+          wx.navigateTo({
+            url: '../index/index',
+          })     
         } else {
           wx.showModal({
             title: '错误',
@@ -153,18 +151,18 @@
 
     wx.$doCountdown(this);
 
-    var name = wx.getStorageSync("name");
-    var cardno = wx.getStorageSync("cardno");
-    var idtype = wx.getStorageSync("idtype");
-    var idno = wx.getStorageSync("idno");
+    // var name = wx.getStorageSync("name");
+    // var cardno = wx.getStorageSync("cardno");
+    // var idtype = wx.getStorageSync("idtype");
+    // var idno = wx.getStorageSync("idno");
 
     var param = {
-      "cardno": cardno,
-      "idtype": idtype,
-      "name": name,
-      "idno": idno
+      // "cardno": cardno,
+      // "idtype": idtype,
+      // "name": name,
+      // "idno": idno
     }
-    wx.$doPost('/v1/bindcard', param, function(ok, ret) {
+    wx.$doPost('/v1/bindcardcode', param, function(ok, ret) {
       console.log(ret.data);
       if (ok) {
         if (ret.data.code == 200) {} else {
diff --git a/pages/bindcheck/bindcheck.wxml b/pages/bindcheck/bindcheck.wxml
index 87dbe70..1b00856 100644
--- a/pages/bindcheck/bindcheck.wxml
+++ b/pages/bindcheck/bindcheck.wxml
@@ -6,13 +6,23 @@
       <view class="input-desc">
         验证码
       </view>
-      <input placeholder="请输入验证码 " type="number" style="width:70%" bindinput="setCode"></input>
-     
+      <input placeholder="请输入验证码" type="number" style="width:45%" bindinput="setCode"></input>
+      <view class="authcode center" style="color:{{sendColor}}" bindtap="getCode">
+        {{sendTime}}
+      </view>
 
     </view>
-    
 
-    <button bindtap="doNext" class="long-btn" style="width: 90%;">下一步</button>
+    <view class="inline-item" style="margin-top:30rpx;background-color:rgb(240, 240, 240)">
+      <checkbox-group bindchange="checkboxChange">
+        <label>
+          <checkbox value="1" class="checkbox" />我已阅读并同意
+        </label>
+      </checkbox-group>
+
+      <view class="policy" bindtap="showXy">《市民卡免密代扣签约协议》</view>
+    </view>
+    <button bindtap="doNext" class="long-btn" style="width: 90%;">签约</button>
 
   </view>
 </view>
\ No newline at end of file
diff --git a/pages/index/index.js b/pages/index/index.js
index ceb267b..a6dd36f 100644
--- a/pages/index/index.js
+++ b/pages/index/index.js
@@ -45,29 +45,29 @@
 
     var userid = wx.getStorageSync("userid");
     var signed = wx.getStorageSync("signed");
-    if (wx.$isEmpty(userid)) {
+    if (wx.$isEmpty(signed) || signed != 'yes') {
       this.setData({
-        bind: '未绑定',
+        bind: '未签约',
         bindcolor: 'red'
       })
 
     } else {
       this.setData({
-        bind: '已绑定',
+        bind: '已签约',
         bindcolor: 'green'
       })
     }
-    if (wx.$isEmpty(signed) || signed != 'yes') {
-      this.setData({
-        sign: '未签约',
-        signcolor: 'red'
-      })
-    } else {
-      this.setData({
-        sign: '已签约',
-        signcolor: 'green'
-      })
-    }
+    // if (wx.$isEmpty(signed) || signed != 'yes') {
+    //   this.setData({
+    //     sign: '未签约',
+    //     signcolor: 'red'
+    //   })
+    // } else {
+    //   this.setData({
+    //     sign: '已签约',
+    //     signcolor: 'green'
+    //   })
+    // }
 
     // if (app.globalData.userInfo) {
     //   this.setData({
@@ -110,9 +110,19 @@
     })
   },
   doBind: function() {
-    wx.navigateTo({
-      url: '../bindcard/bindcard'
-    })
+    var signed = wx.getStorageSync("signed");
+    if (wx.$isEmpty(signed) || signed != 'yes') {
+      wx.navigateTo({
+        url: '../bindcard/bindcard'
+      })
+
+    }else{
+      wx.navigateTo({
+        url: '../unbind/unbind'
+      })
+
+    }
+   
   },
   doSign: function() {
     var check = wx.$checkBankcard();
diff --git a/pages/index/index.wxml b/pages/index/index.wxml
index 257b1c0..b832291 100644
--- a/pages/index/index.wxml
+++ b/pages/index/index.wxml
@@ -38,7 +38,7 @@
 
       <view class=" center inline-item" bindtap="doBind" style="margin-top:1%;">
         <view style="float:left">
-          银行卡
+          市民卡
         </view>
         <view style="float:right;display: block;" style="margin-left:75%;color:{{bindcolor}}">
           {{bind}}
@@ -47,17 +47,7 @@
           >
         </view>
       </view>
-      <view class=" center inline-item" bindtap="doSign" >
-        <view style="float:left">
-          签约代扣免密付
-        </view>
-        <view style="float:right;display: block;" style="margin-left:62%;color:{{signcolor}}">
-          {{sign}}
-        </view>
-        <view class="arrow-icon" style="float:right;">
-          >
-        </view>
-      </view>
+      
     </view>
 
   </view>
diff --git a/pages/loadpage/loadpage.js b/pages/loadpage/loadpage.js
index 642b288..62be5f8 100644
--- a/pages/loadpage/loadpage.js
+++ b/pages/loadpage/loadpage.js
@@ -40,7 +40,7 @@
           if (!wx.$isEmpty(ret.data.token)) {
             wx.setStorageSync("token", ret.data.token);
           }
-          wx.navigateTo({
+          wx.redirectTo({
             url: '../index/index',
           })
 
@@ -101,7 +101,6 @@
    */
   onShow: function() {
 
-
   },
 
   /**
diff --git a/pages/register/register.wxss b/pages/register/register.wxss
index bb3e2e8..55fe44e 100644
--- a/pages/register/register.wxss
+++ b/pages/register/register.wxss
@@ -3,6 +3,3 @@
 
 
 
-.policy{
-  color: rgb(82, 178, 243);
-}
\ No newline at end of file
diff --git a/pages/signxy/signxy.wxml b/pages/signxy/signxy.wxml
index 235e86c..dec6df9 100644
--- a/pages/signxy/signxy.wxml
+++ b/pages/signxy/signxy.wxml
@@ -70,4 +70,3 @@
 方披露自己的个人信息，如联络方式或者邮政地址。请您妥善保护自己的个人信息，仅在必要的情形下向他人提供。如您发现自己的个人信息泄密，尤其是本应用用户名及密码发生泄露，请您立即联络本应用客服，以便本应用采取相应措施。
 
 </text>
- <button class="long-btn" style="width: 90%;margin-bottom:30rpx" disabled="{{disabled}}" bindtap="signXY">{{signMsg}}</button>
\ No newline at end of file
diff --git a/pages/unbind/unbind.js b/pages/unbind/unbind.js
new file mode 100644
index 0000000..e9c2ff1
--- /dev/null
+++ b/pages/unbind/unbind.js
@@ -0,0 +1,146 @@
+// pages/unbind/unbind.js
+Page({
+
+  /**
+   * 页面的初始数据
+   */
+  data: {
+    bankcard:'',
+    name:'',
+    status:''
+
+  },
+
+  /**
+   * 生命周期函数--监听页面加载
+   */
+  onLoad: function (options) {
+    var that = this;
+    wx.$doPost('/v1/cardinfor',{}, function(ok, ret) {
+      if (ok) {
+        wx.hideLoading();
+        console.log(ret)
+        if (ret.data.code == 200) {
+          that.setData({
+            name: ret.data.name,
+            bankcard:  ret.data.cardno,
+            status:ret.data.cardstatus
+          })
+         
+        } else {
+          wx.showModal({
+            title: '错误',
+            content: ret.data.msg,
+            duration: 2000
+          })
+        }
+      } else {
+        wx.hideLoading();
+        wx.showModal({
+          title: '错误',
+          content: "请求失败了，请稍后再试",
+          duration: 2000
+        })
+      }
+    })
+
+  },
+
+  /**
+   * 生命周期函数--监听页面初次渲染完成
+   */
+  onReady: function () {
+
+  },
+
+  unSign: function() {
+   
+    wx.showModal({
+      title: '提示',
+      content: '确定要解除签约吗',
+      success(res) {
+        if (res.confirm) {
+         
+          wx.$doPost('/v1/unsignbxy', {}, function(ok, ret) {
+            if (ok) {
+              console.log(ret)
+              if (ret.data.code == 200) {
+                wx.setStorageSync("signed", ret.data.signed);
+
+                wx.showModal({
+                  title: '提示',
+                  content: '解约成功',
+                  showCancel:false,
+                  success(res) {
+                    if (res.confirm) {
+                      wx.navigateTo({
+                        url: '../index/index',
+                      })
+                    }
+                  }
+                })
+               
+              } else {
+                wx.showModal({
+                  title: '错误',
+                  content: ret.data.msg,
+                  duration: 2000
+                })
+
+              }
+            } else {
+              wx.showModal({
+                title: '错误',
+                content: ret.data.msg,
+                duration: 2000
+              })
+            }
+          })
+
+        }
+      }
+    })
+  },
+
+  /**
+   * 生命周期函数--监听页面显示
+   */
+  onShow: function () {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面隐藏
+   */
+  onHide: function () {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面卸载
+   */
+  onUnload: function () {
+
+  },
+
+  /**
+   * 页面相关事件处理函数--监听用户下拉动作
+   */
+  onPullDownRefresh: function () {
+
+  },
+
+  /**
+   * 页面上拉触底事件的处理函数
+   */
+  onReachBottom: function () {
+
+  },
+
+  /**
+   * 用户点击右上角分享
+   */
+  onShareAppMessage: function () {
+
+  }
+})
\ No newline at end of file
diff --git a/pages/unbind/unbind.json b/pages/unbind/unbind.json
new file mode 100644
index 0000000..8835af0
--- /dev/null
+++ b/pages/unbind/unbind.json
@@ -0,0 +1,3 @@
+{
+  "usingComponents": {}
+}
\ No newline at end of file
diff --git a/pages/unbind/unbind.wxml b/pages/unbind/unbind.wxml
new file mode 100644
index 0000000..98681cf
--- /dev/null
+++ b/pages/unbind/unbind.wxml
@@ -0,0 +1,34 @@
+<view class="container">
+
+  <view class="global-background">
+    <view class=" center inline-item"  >
+        <view style="float:left">
+          姓名
+        </view>
+        <view style="float:right;display: block;" style="margin-left:75%;color:gray">
+          {{name}}
+        </view>
+      </view>
+      <view class=" center inline-item"  >
+        <view style="float:left">
+          市民卡
+        </view>
+        <view style="float:right;display: block;" style="margin-left:45%;color:gray">
+          {{bankcard}}
+        </view>
+      
+      </view>
+      <view class=" center inline-item"   >
+        <view style="float:left">
+          状态
+        </view>
+        <view style="float:right;display: block;" style="margin-left:75%;color:gray">
+          {{status}}
+        </view>
+       
+      </view>
+
+      <button class="long-btn-warn" style="width: 90%;margin-bottom:30rpx; "  bindtap="unSign">解除签约</button>
+
+  </view>
+</view>
\ No newline at end of file
diff --git a/pages/unbind/unbind.wxss b/pages/unbind/unbind.wxss
new file mode 100644
index 0000000..3d8d901
--- /dev/null
+++ b/pages/unbind/unbind.wxss
@@ -0,0 +1 @@
+/* pages/unbind/unbind.wxss */
\ No newline at end of file
