diff --git a/config/application-devel-pg.properties b/config/application-devel-pg.properties
index 7d2e400..73150e5 100644
--- a/config/application-devel-pg.properties
+++ b/config/application-devel-pg.properties
@@ -23,12 +23,12 @@
 spring.jackson.serialization.fail-on-empty-beans=false
 server.port=8080
 
-# payapi.url=https://yy.dlsmk.cn/payapi/
-# payapi.appid=300003
-# payapi.secret=b32309b244904e1789b055eb1da51db1
+payapi.url=https://yy.dlsmk.cn/payapi/
+payapi.appid=300003
+payapi.secret=b32309b244904e1789b055eb1da51db1
 
-payapi.url=http://172.28.43.3:8099/payapi
-payapi.appid=200001
-payapi.secret=dc1d26c0d43e442588092c8d45c21bce
+#payapi.url=http://172.28.43.3:8099/payapi
+#payapi.appid=200001
+#payapi.secret=dc1d26c0d43e442588092c8d45c21bce
 
 
diff --git a/src/main/java/com/supwisdom/dlpay/customer/controller/CustomerController.java b/src/main/java/com/supwisdom/dlpay/customer/controller/CustomerController.java
index 6db52fc..ef6727c 100644
--- a/src/main/java/com/supwisdom/dlpay/customer/controller/CustomerController.java
+++ b/src/main/java/com/supwisdom/dlpay/customer/controller/CustomerController.java
@@ -77,7 +77,10 @@
     public String loadadd(Model model) {
         List<TCustType> list=systemService.findAllCusttype();
         model.addAttribute("typelist",list);
-        return "restaurant/customer/form";
+        List<TDept> deptlist=systemService.findAllDept();
+        model.addAttribute("deptlist",deptlist);
+
+        return "doorlist/customer/form";
     }
 
     @PostMapping("/add")
@@ -100,14 +103,16 @@
         }
     }
 
-/*
     @PostMapping("/delete")
     @ResponseBody
     public JsonResult delete(@RequestParam String  custid) {
-        return customerService.deleteCustomer(custid);
+        boolean flag=webInterfaceService.deleteCustomer(custid);
+        if(flag){
+            return JsonResult.ok();
+        }
+        return JsonResult.error("删除失败");
     }
 
-*/
 
 
 }
diff --git a/src/main/java/com/supwisdom/dlpay/mainservice/dao/CustomerDao.java b/src/main/java/com/supwisdom/dlpay/mainservice/dao/CustomerDao.java
index 150a275..1fe805b 100644
--- a/src/main/java/com/supwisdom/dlpay/mainservice/dao/CustomerDao.java
+++ b/src/main/java/com/supwisdom/dlpay/mainservice/dao/CustomerDao.java
@@ -21,4 +21,5 @@
 
     public PageResult<TCustomerInfo> getCustomerInfoPage(CustomerSearchBean param);
 
+    boolean deleteCustomer(String custid);
 }
diff --git a/src/main/java/com/supwisdom/dlpay/mainservice/dao/impl/CustomerDaoImpl.java b/src/main/java/com/supwisdom/dlpay/mainservice/dao/impl/CustomerDaoImpl.java
index 59ac60a..2e7c8de 100644
--- a/src/main/java/com/supwisdom/dlpay/mainservice/dao/impl/CustomerDaoImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/mainservice/dao/impl/CustomerDaoImpl.java
@@ -138,4 +138,20 @@
         }
         return null;
     }
+
+    @Transactional
+    @Override
+    public boolean deleteCustomer(String custid){
+        boolean flag = false;
+        try {
+            String sql = "delete from TCustomer t where t.custid=?1";
+            Query query = entityManager.createQuery(sql);
+            query.setParameter(1, custid);
+            query.executeUpdate();
+            flag=true;
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return flag;
+    }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/mainservice/service/WebInterfaceService.java b/src/main/java/com/supwisdom/dlpay/mainservice/service/WebInterfaceService.java
index ec8c6ce..0d16da7 100644
--- a/src/main/java/com/supwisdom/dlpay/mainservice/service/WebInterfaceService.java
+++ b/src/main/java/com/supwisdom/dlpay/mainservice/service/WebInterfaceService.java
@@ -138,6 +138,9 @@
     public boolean updateCard(TCard bean);
 
     @Transactional(propagation = Propagation.REQUIRED,rollbackFor = {Exception.class})
+    public boolean deleteCustomer(String custid);
+
+    @Transactional(propagation = Propagation.REQUIRED,rollbackFor = {Exception.class})
     public void doSaveCustomerAndCard(String operid, String now, CustomerListBean list, UserInforResponse response) ;
 
     @Transactional(propagation = Propagation.REQUIRED,rollbackFor = {Exception.class})
diff --git a/src/main/java/com/supwisdom/dlpay/mainservice/service/impl/WebInterfaceServiceImpl.java b/src/main/java/com/supwisdom/dlpay/mainservice/service/impl/WebInterfaceServiceImpl.java
index f40b40c..76e3775 100644
--- a/src/main/java/com/supwisdom/dlpay/mainservice/service/impl/WebInterfaceServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/mainservice/service/impl/WebInterfaceServiceImpl.java
@@ -154,6 +154,12 @@
     }
 
     @Override
+    public boolean deleteCustomer(String custid){
+        return customerDao.deleteCustomer(custid);
+    }
+
+
+    @Override
     public void doSaveCustomerAndCard(String operid, String now, CustomerListBean list,  UserInforResponse response) {
 
         String deptcode=list.getDeptno();
diff --git a/src/main/resources/templates/doorlist/customer/form.html b/src/main/resources/templates/doorlist/customer/form.html
new file mode 100644
index 0000000..7e3c7e0
--- /dev/null
+++ b/src/main/resources/templates/doorlist/customer/form.html
@@ -0,0 +1,105 @@
+
+<form id="customer-form" lay-filter="customer-form" class="layui-form model-form">
+    <input name="custid" id="customer-custid" type="hidden"/>
+
+    <div class="layui-form-item">
+        <label class="layui-form-label"><span style="color: red">* </span>市名卡号</label>
+        <div class="layui-input-block">
+            <input name="cardno" placeholder="请输入" type="text" class="layui-input" maxlength="20"
+                   lay-verify="required|number" required/>
+        </div>
+    </div>
+
+ <!--   <div class="layui-form-item">
+        <label class="layui-form-label"><span style="color: red">* </span>物理卡号</label>
+        <div class="layui-input-block">
+            <input name="cardphyid" placeholder="请输入" type="text" class="layui-input" maxlength="20"
+                   lay-verify="required" required/>
+        </div>
+    </div>-->
+
+    <div class="layui-form-item">
+        <label class="layui-form-label">人员类别</label>
+        <div class="layui-input-block">
+            <select name="custtypeid" id="customer-custtype" lay-verify="required">
+                <option th:each="type : ${typelist}" th:value="${type.custtypeid}">[[${type.custtypename}]]</option>
+            </select>
+        </div>
+    </div>
+
+    <div class="layui-form-item">
+        <label class="layui-form-label">所属部门</label>
+        <div class="layui-input-block">
+            <select name="deptno" id="customer-deptcode" lay-verify="required">
+                <option th:each="dept : ${deptlist}" th:value="${dept.deptno}">[[${dept.deptname}]]</option>
+            </select>
+        </div>
+    </div>
+
+
+
+    <div class="layui-form-item model-form-footer">
+        <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
+        <button class="layui-btn" lay-filter="customer-form-submit" lay-submit id="customer-submitbtn">保存</button>
+    </div>
+</form>
+
+<script>
+    layui.use(['layer', 'admin', 'form', 'formSelects'], function () {
+        var layer = layui.layer;
+        var admin = layui.admin;
+        var form = layui.form;
+        form.render('select');
+        form.render('radio');
+
+
+        var url = '[[@{/customer/add}]]';
+        // 回显user数据
+        var dev = admin.getTempData('t_cust');
+        if (dev) {
+            $('input[name="cardno"]').attr('readonly', 'readonly');
+            form.val('customer-form', dev);
+        }
+        /* let fid = admin.getTempData("fid");
+         if (fid) {
+             form.val('form', {"fid": fid});
+         }*/
+        // 表单提交事件
+        form.on('submit(customer-form-submit)', function (data) {
+            console.log(data);
+            layer.load(2);
+            let token = $("meta[name='_csrf_token']").attr("value");
+            $.ajax({
+                type: "POST",
+                dataType: "json",
+                url: url,
+                headers: {
+                    'Accept': 'application/json',
+                    'Content-Type': 'application/json',
+                    'X-CSRF-TOKEN': token,
+                },
+                data: JSON.stringify(data.field),
+                success: function (result) {
+                    layer.closeAll('loading');
+                    if (result.code == 200) {
+                        layer.msg(result.msg, {icon: 1});
+                        admin.finishPopupCenter();
+                    } else if (result.code == 401) {
+                        layer.msg(result.msg, {icon: 2, time: 1500}, function () {
+                            location.replace('/login');
+                        }, 1000);
+                        return;
+                    } else {
+                        console.log('err:' + result.code);
+                        layer.msg(result.msg, {icon: 2});
+                    }
+                },
+                error: function () {
+                    layer.closeAll('loading');
+                    layer.msg("请求服务器失败！", {icon: 2});
+                }
+            });
+            return false;
+        });
+    });
+</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/doorlist/customer/index.html b/src/main/resources/templates/doorlist/customer/index.html
index 29dce7b..e70b2d0 100644
--- a/src/main/resources/templates/doorlist/customer/index.html
+++ b/src/main/resources/templates/doorlist/customer/index.html
@@ -42,10 +42,9 @@
             minWidth: 80,
             cols: [
                 [
-                    {field: 'custname', sort: true, width: 120, title: '客户姓名'},
-                    {field: 'cardno', sort: true,width: 120, title: '市名卡号'},
-                    {field: 'phone',  title: '联系电话'},
-                    {field: 'bankcardno', sort: true, width: 200, title: '银行卡号'},
+                    {field: 'custname', sort: true, title: '客户姓名'},
+                    {field: 'cardno', sort: true, title: '市名卡号'},
+                    {field: 'bankcardno', sort: true,  title: '银行卡号'},
                     /*{
                         field: 'checkstatus', title: '审核状态', align: 'center', width: 120, sort: true, templet: function (d) {
                             if ('uncheck' == d.checkstatus) {
@@ -71,17 +70,18 @@
                                     return deptlist[i].deptname;
                                 }
                             }
-                            return item.deptno;
+                            return item.deptcode==undefined?'':item.deptcode;
                         }
                     },
                     {
                         field: 'custtype', width:100, title: '人员类别', templet: function (item) {
+                            console.log(custtypelist);
                             for(var i=0 ;i<custtypelist.length;i++){
                                 if(item.custtypeid==custtypelist[i].custtypeid){
                                     return custtypelist[i].custtypename;
                                 }
                             }
-                            return item.custtypeid;
+                            return item.custtypeid==null?'':item.custtypeid;
                         }
                     },
                     {
@@ -125,7 +125,7 @@
         };*/
         let showModel = function (data) {
             let title = data ? '修改人员信息' : '添加人员信息';
-            admin.putTempData('t_cus', data);
+            admin.putTempData('t_cust', data);
             admin.popupCenter({
                 title: title,
                 path: '[[@{/customer/loadadd}]]',
