diff --git a/src/main/java/com/supwisdom/dlpay/doorlist/controller/DoorlistMgrController.java b/src/main/java/com/supwisdom/dlpay/doorlist/controller/DoorlistMgrController.java
index 7c17c48..c6bf48f 100644
--- a/src/main/java/com/supwisdom/dlpay/doorlist/controller/DoorlistMgrController.java
+++ b/src/main/java/com/supwisdom/dlpay/doorlist/controller/DoorlistMgrController.java
@@ -995,7 +995,7 @@
         Pagination pResult = null;
         boolean index = true;
         try {
-            SimpleDateFormat ymdhms = new SimpleDateFormat("yyyyMMdd");
+            /*SimpleDateFormat ymdhms = new SimpleDateFormat("yyyyMMdd");
             if (("").equals(allocatStartDate)) {
                 Calendar now = Calendar.getInstance();
                 allocatEndDate = ymdhms.format(now.getTime());
@@ -1003,7 +1003,7 @@
                 map.put("endDate", allocatEndDate);
                 map.put("startDate", allocatStartDate);
                 index = false;
-            }
+            }*/
 
             String opertype = operUser.getOpertype();
             if (!StringUtil.isEmpty(opertype) &&(opertype.equals("S")||opertype.equals("P"))){
diff --git a/src/main/java/com/supwisdom/dlpay/ncmgr/dao/impl/NcCardListDaoImpl.java b/src/main/java/com/supwisdom/dlpay/ncmgr/dao/impl/NcCardListDaoImpl.java
index dcb44ce..25e9b3f 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/dao/impl/NcCardListDaoImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/dao/impl/NcCardListDaoImpl.java
@@ -90,7 +90,13 @@
     public Pagination getSystemCardList(String devname, String custname, String cardno, String syncflag, String regionid, String allocatStartDate, String allocatEndDate, String operflag, int pageNo, int pageSize) {
         String sql = "select a.listid,c.devname,a.custname,a.cardno,a.bankcardno,b.opername,a.syncflag,a.operflag,a.rectime,a.synctime " +
                 " from t_nc_cardlist a left join tb_operator b on a.operid=b.operid left join t_nc_device c on a.deviceid = c.deviceid " +
-                " where substr(a.rectime,0,9)>=:allocatStartDate and substr(a.rectime,0,9)<=:allocatEndDate and c.operflag='A' ";
+                " where c.operflag='A' ";
+        if (!StringUtil.isEmpty(allocatStartDate)){
+            sql += " and substr(a.rectime,0,9)>=:allocatStartDate ";
+        }
+        if (!StringUtil.isEmpty(allocatEndDate)){
+            sql += "and substr(a.rectime,0,9)<=:allocatEndDate ";
+        }
         if (!StringUtil.isEmpty(devname)){
             sql += " and c.devname like :devname ";
         }
@@ -132,8 +138,12 @@
         if (!StringUtil.isEmpty(regionid)){
             query.setParameter("regionid", regionid);
         }
-        query.setParameter("allocatStartDate", allocatStartDate);
-        query.setParameter("allocatEndDate", allocatEndDate);
+        if (!StringUtil.isEmpty(allocatStartDate)) {
+            query.setParameter("allocatStartDate", allocatStartDate);
+        }
+        if (!StringUtil.isEmpty(allocatEndDate)) {
+            query.setParameter("allocatEndDate", allocatEndDate);
+        }
         pageNo = pageNo <= 0 ? 1 : pageNo;
         query.setFirstResult((pageNo - 1) * pageSize);
         query.setMaxResults(pageSize);
@@ -150,7 +160,13 @@
     private int getSystemCardListCount(String devname, String custname, String cardno, String syncflag,String operflag, String regionid, String allocatStartDate, String allocatEndDate){
         String sql = " select count(*) from t_nc_cardlist a "+
                 " left join t_nc_device c on a.deviceid = c.deviceid " +
-                " where substr(a.rectime,0,9)>=:allocatStartDate and substr(a.rectime,0,9)<=:allocatEndDate and c.operflag='A' ";
+                " where c.operflag='A' ";
+        if (!StringUtil.isEmpty(allocatStartDate)){
+            sql += " and substr(a.rectime,0,9)>=:allocatStartDate ";
+        }
+        if (!StringUtil.isEmpty(allocatEndDate)){
+            sql += "and substr(a.rectime,0,9)<=:allocatEndDate ";
+        }
         if (!StringUtil.isEmpty(devname)){
             sql += " and c.devname like :devname ";
         }
@@ -191,8 +207,12 @@
         if (!StringUtil.isEmpty(regionid)){
             query.setParameter("regionid", regionid);
         }
-        query.setParameter("allocatStartDate", allocatStartDate);
-        query.setParameter("allocatEndDate", allocatEndDate);
+        if (!StringUtil.isEmpty(allocatStartDate)) {
+            query.setParameter("allocatStartDate", allocatStartDate);
+        }
+        if (!StringUtil.isEmpty(allocatEndDate)) {
+            query.setParameter("allocatEndDate", allocatEndDate);
+        }
         int cnt=0;
         List list = query.getResultList();
         if (list!=null && list.size()>0){
@@ -206,7 +226,13 @@
     public Pagination getOperatorCardList(String devname, String custname, String cardno, String syncflag, String regionid, String allocatStartDate, String allocatEndDate, String operflag, int pageNo, int pageSize, String operRegionid) {
         String sql = "select a.listid,c.devname,a.custname,a.cardno,a.bankcardno,b.opername,a.syncflag,a.operflag,a.rectime,a.synctime " +
                 " from t_nc_cardlist a left join tb_operator b on a.operid=b.operid left join t_nc_device c on a.deviceid = c.deviceid " +
-                " where substr(a.rectime,0,9)>=:allocatStartDate and substr(a.rectime,0,9)<=:allocatEndDate and c.operflag='A' ";
+                " where c.operflag='A' ";
+        if (!StringUtil.isEmpty(allocatStartDate)){
+            sql += " and substr(a.rectime,0,9)>=:allocatStartDate ";
+        }
+        if (!StringUtil.isEmpty(allocatEndDate)){
+            sql += "and substr(a.rectime,0,9)<=:allocatEndDate ";
+        }
         if (!StringUtil.isEmpty(devname)){
             sql += " and c.devname like :devname ";
         }
@@ -254,8 +280,12 @@
         }else {
             query.setParameter("regionid", operRegionid);
         }
-        query.setParameter("allocatStartDate", allocatStartDate);
-        query.setParameter("allocatEndDate", allocatEndDate);
+        if (!StringUtil.isEmpty(allocatStartDate)) {
+            query.setParameter("allocatStartDate", allocatStartDate);
+        }
+        if (!StringUtil.isEmpty(allocatEndDate)) {
+            query.setParameter("allocatEndDate", allocatEndDate);
+        }
         pageNo = pageNo <= 0 ? 1 : pageNo;
         query.setFirstResult((pageNo - 1) * pageSize);
         query.setMaxResults(pageSize);
@@ -272,7 +302,13 @@
     private int getOperatorCardListCount(String devname, String custname, String cardno, String syncflag,String operflag, String regionid, String allocatStartDate, String allocatEndDate,String operRegionid){
         String sql = "select count(*) from t_nc_cardlist a " +
                 " left join t_nc_device c on a.deviceid = c.deviceid " +
-                " where substr(a.rectime,0,9)>=:allocatStartDate and substr(a.rectime,0,9)<=:allocatEndDate and c.operflag='A' ";
+                " where c.operflag='A' ";
+        if (!StringUtil.isEmpty(allocatStartDate)){
+            sql += " and substr(a.rectime,0,9)>=:allocatStartDate ";
+        }
+        if (!StringUtil.isEmpty(allocatEndDate)){
+            sql += "and substr(a.rectime,0,9)<=:allocatEndDate ";
+        }
         if (!StringUtil.isEmpty(devname)){
             sql += " and c.devname like :devname ";
         }
@@ -318,8 +354,12 @@
         }else {
             query.setParameter("regionid", operRegionid);
         }
-        query.setParameter("allocatStartDate", allocatStartDate);
-        query.setParameter("allocatEndDate", allocatEndDate);
+        if (!StringUtil.isEmpty(allocatStartDate)) {
+            query.setParameter("allocatStartDate", allocatStartDate);
+        }
+        if (!StringUtil.isEmpty(allocatEndDate)) {
+            query.setParameter("allocatEndDate", allocatEndDate);
+        }
 
         int cnt=0;
         List list = query.getResultList();
@@ -335,7 +375,13 @@
         String sql = "select a.listid,c.devname,a.custname,a.cardno,a.bankcardno,b.opername,a.syncflag,a.operflag,a.rectime,a.synctime " +
                 " from t_nc_cardlist a left join tb_operator b on a.operid=b.operid left join t_nc_device c on a.deviceid = c.deviceid " +
                 " left join t_operbuilding d on d.buildingid = c.buildingid "+
-                " where substr(a.rectime,0,9)>=:allocatStartDate and substr(a.rectime,0,9)<=:allocatEndDate and c.operflag='A' and d.operid = :operid ";
+                " where c.operflag='A' and d.operid = :operid ";
+        if (!StringUtil.isEmpty(allocatStartDate)){
+            sql += " and substr(a.rectime,0,9)>=:allocatStartDate ";
+        }
+        if (!StringUtil.isEmpty(allocatEndDate)){
+            sql += "and substr(a.rectime,0,9)<=:allocatEndDate ";
+        }
         if (!StringUtil.isEmpty(devname)){
             sql += " and c.devname like :devname ";
         }
@@ -369,8 +415,12 @@
             query.setParameter("operflag", operflag);
         }
         query.setParameter("operid", operid);
-        query.setParameter("allocatStartDate", allocatStartDate);
-        query.setParameter("allocatEndDate", allocatEndDate);
+        if (!StringUtil.isEmpty(allocatStartDate)) {
+            query.setParameter("allocatStartDate", allocatStartDate);
+        }
+        if (!StringUtil.isEmpty(allocatEndDate)) {
+            query.setParameter("allocatEndDate", allocatEndDate);
+        }
         pageNo = pageNo <= 0 ? 1 : pageNo;
         query.setFirstResult((pageNo - 1) * pageSize);
         query.setMaxResults(pageSize);
@@ -388,7 +438,13 @@
         String sql = "select count(*) from t_nc_cardlist a " +
                 " left join t_nc_device c on a.deviceid = c.deviceid " +
                 " left join t_operbuilding d on d.buildingid = c.buildingid "+
-                " where substr(a.rectime,0,9)>=:allocatStartDate and substr(a.rectime,0,9)<=:allocatEndDate and c.operflag='A' and d.operid = :operid ";
+                " where c.operflag='A' and d.operid = :operid ";
+        if (!StringUtil.isEmpty(allocatStartDate)){
+            sql += " and substr(a.rectime,0,9)>=:allocatStartDate ";
+        }
+        if (!StringUtil.isEmpty(allocatEndDate)){
+            sql += "and substr(a.rectime,0,9)<=:allocatEndDate ";
+        }
         if (!StringUtil.isEmpty(devname)){
             sql += " and c.devname like :devname ";
         }
@@ -421,8 +477,12 @@
             query.setParameter("operflag", operflag);
         }
         query.setParameter("operid", operid);
-        query.setParameter("allocatStartDate", allocatStartDate);
-        query.setParameter("allocatEndDate", allocatEndDate);
+        if (!StringUtil.isEmpty(allocatStartDate)) {
+            query.setParameter("allocatStartDate", allocatStartDate);
+        }
+        if (!StringUtil.isEmpty(allocatEndDate)) {
+            query.setParameter("allocatEndDate", allocatEndDate);
+        }
         int cnt=0;
         List list = query.getResultList();
         if (list!=null && list.size()>0){
diff --git a/src/main/java/com/supwisdom/dlpay/task/SyncCustomerTask.java b/src/main/java/com/supwisdom/dlpay/task/SyncCustomerTask.java
index 1f25912..0f24a75 100644
--- a/src/main/java/com/supwisdom/dlpay/task/SyncCustomerTask.java
+++ b/src/main/java/com/supwisdom/dlpay/task/SyncCustomerTask.java
@@ -9,7 +9,6 @@
 import com.supwisdom.dlpay.paysdk.ApiLoginHelper;
 import com.supwisdom.dlpay.paysdk.proxy.ApiLoginProxy;
 import com.supwisdom.dlpay.paysdk.proxy.UserProxy;
-import com.supwisdom.dlpay.system.bean.PayApiConfig;
 import com.supwisdom.dlpay.system.domain.TSystemParam;
 import com.supwisdom.dlpay.system.service.SystemService;
 import org.slf4j.Logger;
@@ -40,6 +39,10 @@
 
     private static final String lastSyncTime = "LAST_SYNC_TIME";
 
+    private static final String payapiAppid = "PAYAPI_APPID";
+
+    private static final String payapiSecret = "PAYAPI_SECRET";
+
     @Autowired
     private SystemService systemService;
 
@@ -49,8 +52,6 @@
     @Autowired
     private DoorlistMgrService doorlistMgrService;
 
-    @Autowired
-    private PayApiConfig payApiConfig;
 
     @Autowired
     private ApiLoginProxy apiLoginProxy;
@@ -82,8 +83,10 @@
             }
             //2.登陆核心平台
             ApiLoginHelper helper = new ApiLoginHelper(apiLoginProxy);
-            String appid = payApiConfig.getAppid();
-            String secret = payApiConfig.getSecret();
+            TSystemParam appidSystemParam = systemService.getSystemParamByKey(payapiAppid);
+            String appid = appidSystemParam.getParamValue();
+            TSystemParam secretSystemParam = systemService.getSystemParamByKey(payapiSecret);
+            String secret = secretSystemParam.getParamValue();
             helper.login(appid, secret);
 
 
diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql
index 90134a0..c9215ff 100644
--- a/src/main/resources/data.sql
+++ b/src/main/resources/data.sql
@@ -82,6 +82,7 @@
 INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (12, NULL, 1, NULL, 'layui-icon-engine', '/ncmgr/timegrpindex', '时间组管理', 23, 9,3);
 INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (13, NULL, 1, NULL, 'layui-icon-engine', '/ncmgr/weektimeindex', '时间周管理', 24, 9,3);
 INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (14, NULL, 1, NULL, 'layui-icon-engine', '/ncmgr/devweek', '设备时间周管理', 25, 9,3);
+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (15, NULL, 1, NULL, 'layui-icon-engine', '/ncmgr/impdevindex', '设备导入', 26, 9,3);
 /*INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (15, NULL, 0, NULL, 'layui-icon-app', '#', '集控中心', 30, -1,1);
 INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (16, NULL, 1, NULL, 'layui-icon-app', '/system/dictionary', '数据字典管理', 31, 15,1);*/
 /*INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (17, NULL, 1, NULL, 'layui-icon-app', '/system/queue', '任务调度管理', 32, 15,1);*/
@@ -116,47 +117,49 @@
 -- ----------------------------
 -- Records of tb_role_function
 -- ----------------------------
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23800000', 1, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23840001', 2, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23850002', 3, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23850006', 4, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23860007', 5, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('1', 1, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('2', 2, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('3', 3, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('4', 4, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('5', 5, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
 /*INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23860008', 6, NULL, 'abcdefghijklmnopqrstuvwxyz012345');*/
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee2386000a', 7, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee2386000b', 8, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee2387000c', 9, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee2387000d', 10, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee2387000e', 11, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee2387000f', 12, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23880010', 13, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23880011', 14, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23880012', 18, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23880013', 19, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23880014', 20, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23880015', 21, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23880016', 22, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890017', 23, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890018', 24, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890019', 1, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890020', 2, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890021', 3, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890022', 4, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890023', 5, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890024', 7, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890025', 8, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890026', 9, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890027', 10, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890028', 11, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890029', 12, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890030', 13, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890031', 14, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890032', 18, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890033', 19, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890034', 20, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890035', 21, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890036', 22, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890037', 23, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890038', 24, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('7', 7, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('8', 8, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('9', 9, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('10', 10, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('11', 11, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('12', 12, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('13', 13, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('14', 14, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('15', 15, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('18', 18, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('19', 19, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('20', 20, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('21', 21, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('22', 22, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('23', 23, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('24', 24, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890001', 1, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890002', 2, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890003', 3, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890004', 4, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890005', 5, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890007', 7, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890008', 8, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890009', 9, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890010', 10, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890011', 11, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890012', 12, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890013', 13, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890014', 14, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890015', 15, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890018', 18, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890019', 19, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890020', 20, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890021', 21, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890022', 22, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890023', 23, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890024', 24, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
 
 -- ----------------------------
 -- Records of tb_systemparam
@@ -164,3 +167,5 @@
 INSERT INTO tb_systemparam(param_key,param_value,param_desc,param_flag) VALUES ('IMPCUSTOME_FIRST_FLAG','0','0：名单未导入 1：名单导入数据未同步过 2：数据同步过','1');
 INSERT INTO tb_systemparam(param_key,param_value,param_desc,param_flag) VALUES ('LAST_SYNC_TIME','','上次数据同步时间','1');
 INSERT INTO tb_systemparam(param_key,param_value,param_desc,param_flag) VALUES ('IMPCUSTOME_FIRST_TIME','','第一次名单导入时间','1');
+INSERT INTO tb_systemparam(param_key,param_value,param_desc,param_flag) VALUES ('PAYAPI_APPID','300003','登录核心平台appid','1');
+INSERT INTO tb_systemparam(param_key,param_value,param_desc,param_flag) VALUES ('PAYAPI_SECRET','b32309b244904e1789b055eb1da51db1','登录核心平台secret','1');
diff --git a/src/main/resources/templates/doorlist/deleteDoorlist.html b/src/main/resources/templates/doorlist/deleteDoorlist.html
index 742b47a..0f78960 100644
--- a/src/main/resources/templates/doorlist/deleteDoorlist.html
+++ b/src/main/resources/templates/doorlist/deleteDoorlist.html
@@ -21,7 +21,7 @@
                     <el-col :span="8">
                         <el-form-item label="分配结束时间">
                             <el-date-picker type="date" v-model="deleteDoorForm.allocatEndDate"
-                                            :picker-options="pickerOptions0"   :editable="false"
+                                            :picker-options="pickerOptions1"   :editable="false"
                                             value-format="yyyyMMdd" style="width: 100%;"></el-date-picker>
                         </el-form-item>
                     </el-col>
@@ -221,6 +221,9 @@
             },
             pickerOptions1: {
                 disabledDate:function(time) {
+                    if (deleteDoorlist_vue.deleteDoorForm.allocatStartDate=='' || deleteDoorlist_vue.deleteDoorForm.allocatStartDate== undefined){
+                        return '';
+                    }
                     return time.getTime() <=deleteDoorlist_vue.deleteDoorForm.allocatStartDate.getTime();
                 }
             }
@@ -343,13 +346,16 @@
     }
 
     function deleteDoorlist_commonQuery(_self, deleteDoor, pageno, pagesize) {
-        if (deleteDoor.allocatStartDate != '') {
+        var startStr = '';
+        var endStr = '';
 
-            var startStr = deleteDoor.allocatStartDate.Format('yyyyMMdd');
+        if (deleteDoor.allocatStartDate != '' && deleteDoor.allocatStartDate != undefined) {
+
+            startStr = deleteDoor.allocatStartDate.Format('yyyyMMdd');
         }
-        if (deleteDoor.allocatEndDate != '') {
+        if (deleteDoor.allocatEndDate != '' && deleteDoor.allocatEndDate != undefined) {
 
-            var endStr = deleteDoor.allocatEndDate.Format('yyyyMMdd');
+            endStr = deleteDoor.allocatEndDate.Format('yyyyMMdd');
 
         }
         var url = "[[@{/doorlistMgr/getAllCardListFrDelete?}]]" + "allocatStartDate=" + startStr + "&allocatEndDate=" + endStr +
