diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/bean/CustomerSearchBean.java b/src/main/java/com/supwisdom/dlpay/restaurant/bean/CustomerSearchBean.java
index bc2062b..7506ad2 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/bean/CustomerSearchBean.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/bean/CustomerSearchBean.java
@@ -12,6 +12,15 @@
     private Integer custtypeid;
 
     private String status;  //同步时添加状态异常的人员
+    private String custStatus;
+
+    public String getCustStatus() {
+        return custStatus;
+    }
+
+    public void setCustStatus(String custStatus) {
+        this.custStatus = custStatus;
+    }
 
     public String getCardno() {
         return cardno;
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/bean/CustomerShowBean.java b/src/main/java/com/supwisdom/dlpay/restaurant/bean/CustomerShowBean.java
index 142bf96..5ffd06b 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/bean/CustomerShowBean.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/bean/CustomerShowBean.java
@@ -23,6 +23,15 @@
     private String custcode;
     private String remark;
     private String cardstatus;
+    private String custstatus;
+
+    public String getCuststatus() {
+        return custstatus;
+    }
+
+    public void setCuststatus(String custstatus) {
+        this.custstatus = custstatus;
+    }
 
     public String getCardstatus() {
         return cardstatus;
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/controller/CustomerController.java b/src/main/java/com/supwisdom/dlpay/restaurant/controller/CustomerController.java
index fb09fa3..0cf831b 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/controller/CustomerController.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/controller/CustomerController.java
@@ -66,7 +66,8 @@
                                              @RequestParam(value = "bankcardno", required = false) String bankcardno,
                                              @RequestParam(value = "cardno", required = false) String cardno,
                                              @RequestParam(value = "deptcode", required = false) String deptcode,
-                                             @RequestParam(value = "custtypeid", required = false) Integer custtypeid) {
+                                             @RequestParam(value = "custtypeid", required = false) Integer custtypeid,
+                                             @RequestParam(value = "custStatus", required = false) String custStatus) {
         try {
             if (null == pageNo || pageNo < 1) pageNo = WebConstant.PAGENO_DEFAULT;
             if (null == pageSize || pageSize < 1) pageSize = WebConstant.PAGESIZE_DEFAULT;
@@ -78,6 +79,7 @@
             searchBean.setBankcardno(bankcardno);
             searchBean.setDeptcode(deptcode);
             searchBean.setCusttypeid(custtypeid);
+            searchBean.setCustStatus(custStatus);
             PageResult<CustomerShowBean> bean= customerService.getCustomerPage(searchBean,"page");
 
             return bean;
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/dao/CustomerDao.java b/src/main/java/com/supwisdom/dlpay/restaurant/dao/CustomerDao.java
index f2bc050..fc79247 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/dao/CustomerDao.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/dao/CustomerDao.java
@@ -19,4 +19,5 @@
 
     TCustomer getByIdtypeAndIdno(String idtype, String idno);
 
+
 }
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/CustomerServiceImpl.java b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/CustomerServiceImpl.java
index 2a227f3..88b4432 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/CustomerServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/CustomerServiceImpl.java
@@ -60,7 +60,7 @@
     @Override
     public PageResult<CustomerShowBean> getCustomerPage(CustomerSearchBean param,String type ) {
 
-        StringBuffer querySql = new StringBuffer("select t.cardno,c.custid,c.custname,c.inputdate,gg.discnt,d.deptcode,d.deptname,p.custtypename, " +
+        StringBuffer querySql = new StringBuffer("select t.cardno,c.custid,c.custname,c.inputdate,gg.discnt,d.deptcode,d.deptname,p.custtypename,c.status as custstatus, " +
                 "t.bankcardno,t.cardphyid,c.phone,c.custtype,c.checkstatus,t.status,t.transstatus,c.remark,c.custcode,t.status as cardstatus" +
                 " from tb_customer c " +
                 "left join Tb_card t on t.custid=c.custid " +
@@ -84,8 +84,10 @@
         if (!StringUtil.isEmpty(param.getCheckstatus())) {
             querySql.append(" and  c.checkstatus = :checkstatus or t.status !='normal' or t.transstatus !='normal'");
             countSql.append(" and  c.checkstatus = :checkstatus or t.status !='normal' or t.transstatus !='normal'");
-
-
+        }
+        if (!StringUtil.isEmpty(param.getCustStatus())) {
+            querySql.append(" and  c.status = :custStatus ");
+            countSql.append(" and  c.status = :custStatus ");
         }
         if (!StringUtil.isEmpty(param.getCardno())) {
             querySql.append(" and  t.cardno like :cardno ");
@@ -129,6 +131,10 @@
             query.setParameter("checkstatus", param.getCheckstatus().trim());
             countQuery.setParameter("checkstatus", param.getCheckstatus().trim());
         }
+        if (!StringUtil.isEmpty(param.getCustStatus())) {
+            query.setParameter("custStatus", param.getCustStatus().trim());
+            countQuery.setParameter("custStatus", param.getCustStatus().trim());
+        }
         if (null!=i&&-1!=i){
             query.setParameter("custtypeid", param.getCusttypeid());
             countQuery.setParameter("custtypeid", param.getCusttypeid());
@@ -248,7 +254,13 @@
         }
         discountDetailDao.deleteByUserid(custid);
 
-        customerDao.deleteById(custid);
+        //customerDao.deleteById(custid);
+        TCustomer byId = customerDao.findById(custid).orElse(null);
+        if(byId!=null){
+            byId.setStatus(RestaurantConstant.CUSTOMER_STATUS_DELETE);
+            byId.setRemark(DateUtil.getNow());
+            customerDao.save(byId);
+        }
         return JsonResult.ok("成功");
     }
 
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/util/RestaurantConstant.java b/src/main/java/com/supwisdom/dlpay/restaurant/util/RestaurantConstant.java
index 3cd1c70..69c6f7f 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/util/RestaurantConstant.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/util/RestaurantConstant.java
@@ -39,6 +39,9 @@
     public static final String STATUS_CARD_LOCK = "lock";   //锁卡
     public static final String STATUS_CARD_EXPIRE = "expire";   //过期
 
+    public static final String CUSTOMER_STATUS_NORMAL = "normal";   //用户状态正常
+    public static final String CUSTOMER_STATUS_DELETE = "delete";   //用户状态删除
+
     public static final String OPTYPE_CARD_OPEN = "open";   //开卡
     public static final String OPTYPE_CARD_DELETE = "delete";   //过期
 
diff --git a/src/main/resources/templates/restaurant/customer/index.html b/src/main/resources/templates/restaurant/customer/index.html
index b673d89..28a3b17 100644
--- a/src/main/resources/templates/restaurant/customer/index.html
+++ b/src/main/resources/templates/restaurant/customer/index.html
@@ -51,7 +51,16 @@
                             </select>
                         </div>
                     </div>
-
+                    <div class="layui-inline">
+                        <label class="layui-form-label"> 用户状态：</label>
+                        <div class="layui-input-inline">
+                            <select class="layui-select" id="customer-search-status" style="margin-right: 20px">
+                                <option value="">全部</option>
+                                <option value="normal">正常</option>
+                                <option value="delete">注销</option>
+                            </select>
+                        </div>
+                    </div>
                 </div>
                 <div class="layui-form-item">
                     <div class="layui-inline" style="margin-left:5%">
@@ -95,7 +104,9 @@
                     {field: 'custtypename', align: 'center', title: '客户类别', width: 160},
                     {
                         field: 'discnt', title: '有无劳务费', align: 'center', width: 120, sort: true, templet: function (d) {
-                            if (0 < d.discnt) {
+                            if(d.custstatus=='delete'){
+                                return '';
+                            }else if (0 < d.discnt) {
                                 return '<span class="layui-badge layui-bg-green">有</span>';
                             } else {
                                 return '<span class="layui-badge layui-bg-gray">无</span>';
@@ -109,7 +120,9 @@
                         align: 'center',
                         sort: true,
                         templet: function (d) {
-                            if ('uncheck' == d.checkstatus) {
+                            if(d.custstatus=='delete'){
+                                return '';
+                            }else if ('uncheck' == d.checkstatus) {
                                 return '<span class="layui-badge layui-bg-orange">待审核</span>'
                             } else if ('normal' == d.checkstatus) {
                                 return '<span class="layui-badge layui-bg-green">成功</span>';
@@ -139,7 +152,9 @@
                             } else {
                                 return d.cardstatus;
                             }*/
-                            if (null== d.cardstatus) {
+                            if(d.custstatus=='delete'){
+                                return '<span class="layui-badge layui-bg-red">注销</span>';
+                            }else if (null== d.cardstatus) {
                                 return '<span class="layui-badge layui-bg-orange">待审核</span>'
                             } else if ('normal' == d.cardstatus&&'normal'==d.transstatus) {
                                 return '<span class="layui-badge layui-bg-green">正常</span>';
@@ -158,6 +173,9 @@
                         width: 250,
                         fixed: 'right',
                         templet: function (item) {
+                            if(item.custstatus=='delete'){
+                                return '';
+                            }
                             return ' <a class="layui-btn  layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a> ' +
                                 ' <a class="layui-btn  layui-btn-xs" lay-event="discount"><i class="layui-icon layui-icon-edit"></i>设置劳务费</a> ' +
                                 ' <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i>删除</a>';
@@ -184,8 +202,9 @@
 
             let deptcode = $('#customer-search-deptcode').val();
             let custtypeid = $('#customer-search-custtype').val();
+            let custStatus = $('#customer-search-status').val();
             table.reload('customer-table', {
-                where: {custname: custname,cardno: cardno,bankcardno: bankcardno, deptcode: deptcode, custtypeid: custtypeid},
+                where: {custname: custname,cardno: cardno,bankcardno: bankcardno, deptcode: deptcode, custtypeid: custtypeid, custStatus: custStatus},
                 page: {curr: 1}
             });
         });
