diff --git a/config/application-devel-pg.properties b/config/application-devel-pg.properties
index 7fad670..4fb1de8 100644
--- a/config/application-devel-pg.properties
+++ b/config/application-devel-pg.properties
@@ -39,5 +39,5 @@
 payapi.logintime= 0 0/5 * * * ? 
 
 restaurant.check_discount_expire.cron=-
-
+restaurant.customercheck.cron=0 0/1 * * * ?
 auditsys.url=http://172.28.43.20:8082/collect/device/
\ No newline at end of file
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/bean/CustomerSaveBean.java b/src/main/java/com/supwisdom/dlpay/restaurant/bean/CustomerSaveBean.java
index 3184dc7..d06ae60 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/bean/CustomerSaveBean.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/bean/CustomerSaveBean.java
@@ -19,6 +19,24 @@
     private String checkstatus;
     private Integer savecardflag;
     private String deptcode;
+    private String custcode;
+    private String remark;
+
+    public String getCustcode() {
+        return custcode;
+    }
+
+    public void setCustcode(String custcode) {
+        this.custcode = custcode;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
 
     public String getCustid() {
         return custid;
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 2863a53..990cf3f 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/bean/CustomerSearchBean.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/bean/CustomerSearchBean.java
@@ -4,9 +4,29 @@
 
 public class CustomerSearchBean extends PageBean {
     private String custname;
+    private String cardno;
+    private String bankcardno;
+
     private String checkstatus;
     private String deptcode;
     private Integer custtypeid;
+
+    public String getCardno() {
+        return cardno;
+    }
+
+    public void setCardno(String cardno) {
+        this.cardno = cardno;
+    }
+
+    public String getBankcardno() {
+        return bankcardno;
+    }
+
+    public void setBankcardno(String bankcardno) {
+        this.bankcardno = bankcardno;
+    }
+
     public String getCustname() {
         return custname;
     }
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 9fb2eab..5ee491d 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/bean/CustomerShowBean.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/bean/CustomerShowBean.java
@@ -19,6 +19,17 @@
     private String custtypename;
     private Integer discnt;
 
+    private String custcode;
+    private String remark;
+    private String cardstatus;
+
+    public String getCardstatus() {
+        return cardstatus;
+    }
+
+    public void setCardstatus(String cardstatus) {
+        this.cardstatus = cardstatus;
+    }
 
     public String getCustid() {
         return custid;
@@ -133,4 +144,20 @@
     public void setDiscnt(Integer discnt) {
         this.discnt = discnt;
     }
+
+    public String getCustcode() {
+        return custcode;
+    }
+
+    public void setCustcode(String custcode) {
+        this.custcode = custcode;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
 }
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 cb78882..fb09fa3 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/controller/CustomerController.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/controller/CustomerController.java
@@ -63,6 +63,8 @@
     public PageResult<CustomerShowBean> getDataList(@RequestParam("page") Integer pageNo,
                                              @RequestParam("limit") Integer pageSize,
                                              @RequestParam(value = "custname", required = false) String custname,
+                                             @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) {
         try {
@@ -72,6 +74,8 @@
             searchBean.setPageNo(pageNo);
             searchBean.setCustname(custname);
             searchBean.setPageSize(pageSize);
+            searchBean.setCardno(cardno);
+            searchBean.setBankcardno(bankcardno);
             searchBean.setDeptcode(deptcode);
             searchBean.setCusttypeid(custtypeid);
             PageResult<CustomerShowBean> bean= customerService.getCustomerPage(searchBean,"page");
@@ -128,9 +132,9 @@
     @PreAuthorize("hasPermission('/customer/download','')")
     @ResponseBody
     public JsonResult downloadfile(HttpServletRequest request, HttpServletResponse response) throws Exception{
-        String[] titles0 = {"姓名",	"市名卡号",	"市名卡银行卡号","人员类别号","手机（选填）","部门代码（选填）"
+        String[] titles0 = {"姓名",	"市名卡号",	"市名卡银行卡号","人员类别号","手机（选填）","部门代码（选填）","客户编号（选填）","备注（选填）"
         }; //表头
-        String[][] info0 = {{"张三",	"123456",	"3000000","1","12341234123","1"
+        String[][] info0 = {{"张三",	"123456",	"3000000","1","12341234123","1","1001",""
         }}; // 示例内容
         String fileName0 = "客户导入模板";// 保存数据
 
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/domain/TCustomer.java b/src/main/java/com/supwisdom/dlpay/restaurant/domain/TCustomer.java
index 3b44efc..244db51 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/domain/TCustomer.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/domain/TCustomer.java
@@ -23,6 +23,8 @@
     private String checkstatus;
     private String inputdate;
     private String deptcode;
+    private String custcode;
+    private String remark;
 
     @Id
     @GenericGenerator(name = "idGenerator", strategy = "uuid")
@@ -149,4 +151,24 @@
     public void setInputdate(String inputdate) {
         this.inputdate = inputdate;
     }
+
+
+    @Column(name = "custcode", length = 32)
+    public String getCustcode() {
+        return custcode;
+    }
+
+    public void setCustcode(String custcode) {
+        this.custcode = custcode;
+    }
+
+
+    @Column(name = "remark", length = 200)
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
 }
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 5e9921c..ecb13a2 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,21 +61,22 @@
     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 from tb_customer c " +
+                "t.bankcardno,t.cardphyid,c.phone,c.custtype,c.checkstatus,t.status,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 " +
                 "on t.cardno=gg.cardno " +
                 "left join tb_dept d on c.deptcode= d.deptcode " +
                 "left join tb_custtype p on c.custtype=p.custtypeid " +
 
-                " where 1=1 and t.status='normal'");
+                " where 1=1 ");
         StringBuffer countSql = new StringBuffer("select count(*) as cnt 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 " +
                 "on t.cardno=gg.cardno " +
                 "left join tb_dept d on c.deptcode= d.deptcode " +
                 "left join tb_custtype p on c.custtype=p.custtypeid " +
-                " where 1=1 and t.status='normal'");
+                " where 1=1 ");
         if (!StringUtil.isEmpty(param.getCustname())) {
             querySql.append(" and  c.custname like :str ");
             countSql.append(" and  c.custname like :str ");
@@ -84,6 +85,14 @@
             querySql.append(" and  c.checkstatus = :checkstatus ");
             countSql.append(" and  c.checkstatus = :checkstatus ");
         }
+        if (!StringUtil.isEmpty(param.getCardno())) {
+            querySql.append(" and  t.cardno like :cardno ");
+            countSql.append(" and  t.cardno like :cardno ");
+        }
+        if (!StringUtil.isEmpty(param.getBankcardno())) {
+            querySql.append(" and  t.bankcardno like :bankcardno ");
+            countSql.append(" and  t.bankcardno like :bankcardno ");
+        }
         Integer i=param.getCusttypeid();
         if (null!=i&&-1!=i){
             querySql.append(" and c.custtype = :custtypeid ");
@@ -105,6 +114,14 @@
             query.setParameter("str", "%" + param.getCustname().trim() + "%");
             countQuery.setParameter("str", "%" + param.getCustname().trim() + "%");
         }
+        if (!StringUtil.isEmpty(param.getCardno())) {
+            query.setParameter("cardno", "%" + param.getCardno().trim() + "%");
+            countQuery.setParameter("cardno", "%" + param.getCardno().trim() + "%");
+        }
+        if (!StringUtil.isEmpty(param.getBankcardno())) {
+            query.setParameter("bankcardno", "%" + param.getBankcardno().trim() + "%");
+            countQuery.setParameter("bankcardno", "%" + param.getBankcardno().trim() + "%");
+        }
         if (!StringUtil.isEmpty(param.getCheckstatus())) {
             query.setParameter("checkstatus", param.getCheckstatus().trim());
             countQuery.setParameter("checkstatus", param.getCheckstatus().trim());
@@ -163,17 +180,20 @@
         cus.setCheckstatus(customer.getCheckstatus());
         cus.setInputdate(DateUtil.getNow("yyyyMMdd"));
         cus.setDeptcode(customer.getDeptcode());
+        cus.setRemark(customer.getRemark());
+        cus.setCustcode(customer.getCustcode());
         cus = customerDao.save(cus);
         if (null != cus) {
             if(0==customer.getSavecardflag()){
                 String date = DateUtil.getNow("yyyyMMdd");
-                List<TCard> cardlist = cardDao.findAllByCustidAndStatus(customer.getCustid(),RestaurantConstant.STATUS_CARD_NORMAL);
+                List<TCard> cardlist = cardDao.findAllByCustid(customer.getCustid());
                 if (cardlist.size() > 0) {
-                    TCard ocard = cardlist.get(0);
-                    String cardverno=systemUtilService.getCardverno();
-                    ocard.setStatus(RestaurantConstant.STATUS_CARD_LOGOUT);
-                    cardDao.save(ocard);
-                    saveCardver(cardverno, date, ocard, ocard.getStatus(), ocard.getStatus(), 1);
+                    for(TCard c:cardlist){
+                        cardDao.delete(c);
+                        String cardverno=systemUtilService.getCardverno();
+                        saveCardver(cardverno, date, c, c.getStatus(), c.getStatus(), 0);
+                    }
+
                  //   return JsonResult.ok("成功");
                 }
                 TCard card = new TCard();
@@ -181,8 +201,8 @@
                 card.setCardno(customer.getCardno());
                 card.setOpendate(date);
                 card.setCustid(cus.getCustid());
-                card.setStatus(RestaurantConstant.STATUS_CARD_NORMAL);
-                card.setTransstatus(RestaurantConstant.STATUS_CARD_NORMAL);
+           //     card.setStatus(RestaurantConstant.STATUS_CHECKSTATUS_UNCHECK);
+           //     card.setTransstatus(RestaurantConstant.STATUS_CHECKSTATUS_UNCHECK);
                 if(null!=customer.getCardphyid()){
                     card.setCardphyid(customer.getCardphyid());
                 }
@@ -190,7 +210,7 @@
                 card.setBankcardno(customer.getBankcardno());
                 card.setExpiredate("");
                 card = cardDao.save(card);
-                //       saveCardver(cardverno, date, card, card.getStatus(), RestaurantConstant.STATUS_CARD_NORMAL, 1);
+                saveCardver(cardverno, date, card, card.getStatus(), RestaurantConstant.STATUS_CARD_NORMAL, 1);
             }
       }
 
@@ -295,6 +315,12 @@
                         }
 
                     }
+                    if (null != data[i][6]) {
+                        d.setCustcode((String) data[i][6]);
+                    }
+                    if (null != data[i][7]) {
+                        d.setRemark((String) data[i][7]);
+                    }
 
 
                     if(cardDao.countByCardno((String) data[i][1]) > 0){
diff --git a/src/main/resources/templates/restaurant/customer/form.html b/src/main/resources/templates/restaurant/customer/form.html
index 319ca9f..41c75a0 100644
--- a/src/main/resources/templates/restaurant/customer/form.html
+++ b/src/main/resources/templates/restaurant/customer/form.html
@@ -57,6 +57,18 @@
             <input name="phone"  placeholder="请输入" type="text" class="layui-input"/>
         </div>
     </div>
+    <div class="layui-form-item">
+        <label class="layui-form-label">客户编号</label>
+        <div class="layui-input-block">
+            <input name="custcode"  placeholder="请输入" type="text" class="layui-input"/>
+        </div>
+    </div>
+    <div class="layui-form-item">
+        <label class="layui-form-label">备注</label>
+        <div class="layui-input-block">
+            <input name="remark"  placeholder="请输入" type="text" class="layui-input"/>
+        </div>
+    </div>
 
     <div class="layui-form-item model-form-footer">
         <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
diff --git a/src/main/resources/templates/restaurant/customer/index.html b/src/main/resources/templates/restaurant/customer/index.html
index 0282b9c..01e2f5f 100644
--- a/src/main/resources/templates/restaurant/customer/index.html
+++ b/src/main/resources/templates/restaurant/customer/index.html
@@ -7,91 +7,108 @@
         </span>
     </div>
     <div class="layui-card-body">
+
+
         <div class="layui-form toolbar">
-            搜索：
-            <div class="layui-inline" style="margin-right: 20px;">
-                <input id="customer-search-value" class="layui-input search-input" type="text" placeholder="输入姓名"
-                />
-                <select  class="layui-select"   id="customer-search-custtype"   style="margin-right: 20px">
-                    <option value="">全部</option>
-                    <option th:each="type : ${typelist}" th:value="${type.custtypeid}">[[${type.custtypename}]]</option>
-                </select>
-                <select  class="layui-select"   id="customer-search-deptcode"   style="margin-right: 20px">
-                    <option value="">全部</option>
-                    <option th:each="dept : ${deptlist}" th:value="${dept.deptcode}">[[${dept.deptname}]]</option>
-                </select>
-<!--                <input id="search-customer-deptcode" type="text"-->
-<!--                       lay-filter="search-customer-deptcode-filter" autocomplete="off"-->
-<!--                       class="layui-input search-input"/>-->
-            </div>
-            <button id="customer-btn-search" class="layui-btn icon-btn" data-type="search"><i class="layui-icon">&#xe615;</i>搜索
-            </button>
-            <button id="customer-btn-add" class="layui-btn icon-btn" data-type="add"><i class="layui-icon"></i>添加人员</button>
-            <button id="customer-btn-import" class="layui-btn icon-btn" ><i class="layui-icon"></i>批量导入</button>
-            <a id="customer-btn-export" href="javascript:void(0);" class="layui-btn layui-btn-primary" >导出</a>
+                <div class="layui-form-item">
+                    <div class="layui-inline">
+                        <label class="layui-form-label">姓名：</label>
+                        <div class="layui-input-inline">
+                            <input id="customer-search-custname" class="layui-input " type="text" placeholder="输入姓名"/>
+                        </div>
+
+                    </div>
+                    <div class="layui-inline">
+                        <label class="layui-form-label">市民卡号：</label>
+                        <div class="layui-input-inline">
+                            <input id="customer-search-cardno" class="layui-input " type="text" placeholder="输入卡号"/>
+
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <label class="layui-form-label"> 银行卡号：</label>
+                        <div class="layui-input-inline">
+                            <input id="customer-search-bankcardno" class="layui-input " type="text" placeholder="输入银行卡号"/>
+                        </div>
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <div class="layui-inline">
+                        <label class="layui-form-label"> 部门：</label>
+                        <div class="layui-input-inline">
+                            <select class="layui-select" id="customer-search-deptcode" style="margin-right: 20px">
+                                <option value="">全部</option>
+                                <option th:each="dept : ${deptlist}" th:value="${dept.deptcode}">[[${dept.deptname}]]</option>
+                            </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-custtype" style="margin-right: 20px">
+                                <option value="">全部</option>
+                                <option th:each="type : ${typelist}" th:value="${type.custtypeid}">[[${type.custtypename}]]</option>
+                            </select>
+                        </div>
+                    </div>
+
+                </div>
+                <div class="layui-form-item">
+                    <div class="layui-inline" style="margin-left:5%">
+                        <button id="customer-btn-search" class="layui-btn icon-btn" data-type="search"><i class="layui-icon">&#xe615;</i>搜索
+                        </button>
+                        <button id="customer-btn-add" class="layui-btn icon-btn" data-type="add"><i class="layui-icon"></i>添加人员
+                        </button>
+                        <button id="customer-btn-import" class="layui-btn icon-btn"><i class="layui-icon"></i>批量导入</button>
+                        <a id="customer-btn-export" href="javascript:void(0);" class="layui-btn layui-btn-primary">导出</a>
+
+                    </div>
+                </div>
+
         </div>
+
         <table class="layui-table" id="customer-table" lay-filter="customer-table"></table>
     </div>
 </div>
 
 <script>
 
-    layui.use(['form', 'table', 'layer', 'admin', 'element','treeSelect'], function () {
+    layui.use(['form', 'table', 'layer', 'admin', 'element', 'treeSelect'], function () {
         let form = layui.form;
         let table = layui.table;
         let admin = layui.admin;
         form.render("select");
 
-        // var treeSelect=layui.treeSelect;
-        // treeSelect.render({
-        //     elem: '#search-customer-deptcode',
-        //     data: '[[@{/customer/depttree}]]',
-        //     type: 'get',
-        //     placeholder: '选择部门',
-        //     search: false,
-        //     style: {
-        //         folder: {
-        //             enable: false
-        //         },
-        //         line: {
-        //             enable: true
-        //         }
-        //     },
-        //     // 点击回调
-        //     click: function (d) {
-        //         var treeNode = d.current;
-        //         console.log(treeNode);
-        //         return true;
-        //     },
-        //     success: function (d) {
-        //         console.log(d); // 加载完成后的回调函数
-        //     }
-        // });
         // 渲染表格
         table.render({
             elem: '#customer-table',
             url: '[[@{/customer/list}]]',
             page: true,
-            minWidth: 80,
+            height: '500px',
+            even: true ,
             cols: [
                 [
-                    {field: 'custname', sort: true, title: '客户姓名'},
-                    {field: 'cardno', sort: true, title: '市名卡号'},
-                    {field: 'deptname', sort: true, title: '部门'},
-                    {field: 'bankcardno',  title: '银行卡号',width:160},
-
-                    {field: 'custtypename',  title: '客户类别'},
+                    {field: 'custname', align: 'center', title: '客户姓名', width: 160},
+                    {field: 'cardno', align: 'center', sort: true, title: '市民卡号', width: 160},
+                    {field: 'deptname', align: 'center', sort: true, title: '部门', width: 160},
+                    {field: 'bankcardno', align: 'center', title: '银行卡号', width: 160},
+                    {field: 'custtypename', align: 'center', title: '客户类别', width: 160},
                     {
                         field: 'discnt', title: '有无餐补', align: 'center', width: 120, sort: true, templet: function (d) {
-                            if (0< d.discnt) {
+                            if (0 < d.discnt) {
                                 return '<span class="layui-badge layui-bg-green">有</span>';
-                            }  else {
+                            } else {
                                 return '<span class="layui-badge layui-bg-gray">无</span>';
                             }
                         }
                     },
                     {
-                        field: 'checkstatus', title: '审核状态', align: 'center', sort: true, templet: function (d) {
+                        field: 'checkstatus',
+                        width: 160,
+                        title: '审核状态',
+                        align: 'center',
+                        sort: true,
+                        templet: function (d) {
                             if ('uncheck' == d.checkstatus) {
                                 return '<span class="layui-badge layui-bg-orange">待审核</span>'
                             } else if ('normal' == d.checkstatus) {
@@ -103,14 +120,41 @@
                             }
                         }
                     },
-
                     {
-                        field: 'custid', align: 'center',title: '操作',width:250, fixed: 'right', templet: function (item) {
-                            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> '+
+                        field: 'cardstatus',
+                        width: 160,
+                        title: '卡状态',
+                        align: 'center',
+                        sort: true,
+                        templet: function (d) {
+                            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>';
+                            } else if ('logout' == d.cardstatus) {
+                                return '<span class="layui-badge layui-bg-gray">注销</span>';
+                            } else if ('closed' == d.cardstatus) {
+                                return '<span class="layui-badge layui-bg-red">异常</span>';
+                            } else {
+                                return d.cardstatus;
+                            }
+                        }
+                    },
+                    {field: 'custcode', align: 'center', title: '客户编号', width: 160},
+                    {field: 'remark', align: 'center', width: 250, title: '备注'},
+                    {
+                        field: 'custid',
+                        align: 'center',
+                        title: '操作',
+                        width: 250,
+                        fixed: 'right',
+                        templet: function (item) {
+                            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>';
                         }
                     }
+
                 ]
             ]
         });
@@ -120,15 +164,21 @@
 
              $("#form").submit();*/
 
-            $("#customer-btn-export").attr("href", url );
+            $("#customer-btn-export").attr("href", url);
             $("#customer-btn-export")[0].click();
         });
         // 搜索按钮点击事件
         $('#customer-btn-search').click(function () {
-            let key = $('#customer-search-value').val().trim();
-            let deptcode=$('#customer-search-deptcode').val();
-            let custtypeid=$('#customer-search-custtype').val();
-            table.reload('customer-table', {where: {custname: key,deptcode:deptcode,custtypeid:custtypeid}, page: {curr: 1}});
+            let custname = $('#customer-search-custname').val().trim();
+            let cardno = $('#customer-search-cardno').val().trim();
+            let bankcardno = $('#customer-search-bankcardno').val().trim();
+
+            let deptcode = $('#customer-search-deptcode').val();
+            let custtypeid = $('#customer-search-custtype').val();
+            table.reload('customer-table', {
+                where: {custname: custname,cardno: cardno,bankcardno: bankcardno, deptcode: deptcode, custtypeid: custtypeid},
+                page: {curr: 1}
+            });
         });
         $('#customer-btn-add').click(function () {
             showModel();
@@ -137,7 +187,7 @@
             showDownload();
         });
         let showDownload = function () {
-            let title ='导入';
+            let title = '导入';
             admin.popupCenter({
                 title: title,
                 path: '[[@{/customer/loadimport}]]',
@@ -177,7 +227,7 @@
             admin.putTempData('custid', data.custid);
             admin.popupCenter({
                 title: title,
-                area:['400px','600px'],
+                area: ['400px', '600px'],
                 path: '[[@{/customer/loaddiscount}]]'
             });
         };
