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 5ee491d..142bf96 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/bean/CustomerShowBean.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/bean/CustomerShowBean.java
@@ -17,6 +17,7 @@
     private String deptcode;
     private String deptname;
     private String custtypename;
+    private String transstatus;
     private Integer discnt;
 
     private String custcode;
@@ -160,4 +161,12 @@
     public void setRemark(String remark) {
         this.remark = remark;
     }
+
+    public String getTransstatus() {
+        return transstatus;
+    }
+
+    public void setTransstatus(String transstatus) {
+        this.transstatus = transstatus;
+    }
 }
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 a65d019..2a227f3 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
@@ -61,7 +61,7 @@
     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, " +
-                "t.bankcardno,t.cardphyid,c.phone,c.custtype,c.checkstatus,t.status,c.remark,c.custcode,t.status as cardstatus" +
+                "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 " +
                 "left join (select  cardno,cast(count(ruleid) as int4)as discnt from tb_discount_detail group by cardno) gg " +
@@ -82,8 +82,8 @@
             countSql.append(" and  c.custname like :str ");
         }
         if (!StringUtil.isEmpty(param.getCheckstatus())) {
-            querySql.append(" and  c.checkstatus = :checkstatus or t.status !='normal'");
-            countSql.append(" and  c.checkstatus = :checkstatus or t.status !='normal'");
+            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'");
 
 
         }
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/task/RestaurantTask.java b/src/main/java/com/supwisdom/dlpay/restaurant/task/RestaurantTask.java
index d852115..b570017 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/task/RestaurantTask.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/task/RestaurantTask.java
@@ -53,11 +53,11 @@
         logger.debug("=================== 客户信息校验任务开始： ===================");
 
         List<TenantDetails> multiTenantSchemas = multiTenantService.getSystemAllTenantDetails();
-//        for (TenantDetails schema : multiTenantSchemas) {
-//            TenantContextHolder.getContext().setTenant(schema);  //切换schema
-//            logger.debug("开始执行schema=[" + schema.getDbSchema() + "]的客户信息校验任务：");
+        for (TenantDetails schema : multiTenantSchemas) {
+            TenantContextHolder.getContext().setTenant(schema);  //切换schema
+            logger.debug("开始执行schema=[" + schema.getDbSchema() + "]的客户信息校验任务：");
             dealCustomerCheckTask(); //TODO:执行task
-//        }
+        }
 
         long t2 = System.currentTimeMillis();
         logger.debug("=================== 客户信息校验任务结束，耗时 " + (t2 - t1) + " ms ===================");
diff --git a/src/main/resources/templates/restaurant/customer/index.html b/src/main/resources/templates/restaurant/customer/index.html
index fe0e37f..b673d89 100644
--- a/src/main/resources/templates/restaurant/customer/index.html
+++ b/src/main/resources/templates/restaurant/customer/index.html
@@ -127,7 +127,8 @@
                         align: 'center',
                         sort: true,
                         templet: function (d) {
-                            if ('uncheck' == d.cardstatus) {
+
+                  /*          if ('uncheck' == d.cardstatus) {
                                 return '<span class="layui-badge layui-bg-orange">待审核</span>'
                             } else if ('normal' == d.cardstatus) {
                                 return '<span class="layui-badge layui-bg-green">正常</span>';
@@ -137,7 +138,15 @@
                                 return '<span class="layui-badge layui-bg-red">异常</span>';
                             } else {
                                 return d.cardstatus;
+                            }*/
+                            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>';
+                            }else{
+                                return '<span class="layui-badge layui-bg-red">异常</span>';
                             }
+
                         }
                     },
                     {field: 'custcode', align: 'center', title: '客户编号', width: 160},
