diff --git a/src/main/java/com/supwisdom/dlpay/app/controller/AppController.java b/src/main/java/com/supwisdom/dlpay/app/controller/AppController.java
index 6de832e..64b952a 100644
--- a/src/main/java/com/supwisdom/dlpay/app/controller/AppController.java
+++ b/src/main/java/com/supwisdom/dlpay/app/controller/AppController.java
@@ -54,6 +54,21 @@
         return map;
     }
 
+    //根据设备名称模糊查询
+    @ResponseBody
+    @RequestMapping("/searchByDevName")
+    public Map searchByDevName(@RequestParam(value = "userId",required = true,defaultValue = "")String userId,
+                               @RequestParam(value = "devName",required = true,defaultValue = "")String devName ){
+        Map map = new HashMap();
+        try{
+            List<TNcDevice> devList = appService.findAllDevByUserIdAndDevName(userId,devName);
+            map.put("devNameList", devList);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return map;
+    }
+
     /*@RequestMapping("/appMintUIindex")
     public String loadH5DevList(Model model){
         try{
diff --git a/src/main/java/com/supwisdom/dlpay/app/dao/AppDao.java b/src/main/java/com/supwisdom/dlpay/app/dao/AppDao.java
index 1322745..7d028e7 100644
--- a/src/main/java/com/supwisdom/dlpay/app/dao/AppDao.java
+++ b/src/main/java/com/supwisdom/dlpay/app/dao/AppDao.java
@@ -9,6 +9,8 @@
 public interface AppDao {
     public List<TNcDevice> findAllDevByUserId(String userId);
 
+    public List<TNcDevice> findAllDevByUserIdAndDevName(String userId,String devName);
+
     //获取app远程开门最大流水号
     public String getMaxAppRmtSeqNo();
 
diff --git a/src/main/java/com/supwisdom/dlpay/app/dao/impl/AppDaoImpl.java b/src/main/java/com/supwisdom/dlpay/app/dao/impl/AppDaoImpl.java
index 1df919d..307723a 100644
--- a/src/main/java/com/supwisdom/dlpay/app/dao/impl/AppDaoImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/app/dao/impl/AppDaoImpl.java
@@ -37,6 +37,24 @@
 
     @Transactional
     @Override
+    public List<TNcDevice> findAllDevByUserIdAndDevName(String userId, String devName) {
+        String sql = "select a.* from t_nc_device a  " +
+                " left join tb_app_devfre c on a.deviceid=c.deviceid " +
+                " where a.devtype='R' and a.devname like ?2 and a.deviceid in  " +
+                "    (select b.deviceid from t_nc_cardlist b where b.operflag='A' and b.syncflag='Y' and b.custid=?1 )  " +
+                " order by c.frequency desc ";
+        Query query = entityManager.createNativeQuery(sql, TNcDevice.class);
+        query.setParameter(1, userId);
+        query.setParameter(2, "%"+devName+"%");
+        List<TNcDevice> list = query.getResultList();
+        if (list!=null && list.size()>0){
+            return list;
+        }
+        return null;
+    }
+
+    @Transactional
+    @Override
     public String getMaxAppRmtSeqNo() {
         String sql = "select max(doorseqno) from t_doordtl where doorseqno like 'AR%' ";
         Query query = entityManager.createNativeQuery(sql);
diff --git a/src/main/java/com/supwisdom/dlpay/app/service/AppService.java b/src/main/java/com/supwisdom/dlpay/app/service/AppService.java
index defa67b..be11399 100644
--- a/src/main/java/com/supwisdom/dlpay/app/service/AppService.java
+++ b/src/main/java/com/supwisdom/dlpay/app/service/AppService.java
@@ -20,4 +20,8 @@
     @Transactional(propagation = Propagation.REQUIRED,rollbackFor = {Exception.class})
     public boolean recordFre(String userId,int devId);
 
+    //根据用户和设备名称 查询开门设备
+    @Transactional(propagation = Propagation.REQUIRED,rollbackFor = {Exception.class})
+    public List<TNcDevice> findAllDevByUserIdAndDevName(String userId,String devName);
+
 }
diff --git a/src/main/java/com/supwisdom/dlpay/app/service/impl/AppServiceImpl.java b/src/main/java/com/supwisdom/dlpay/app/service/impl/AppServiceImpl.java
index e74bcf3..4b864b5 100644
--- a/src/main/java/com/supwisdom/dlpay/app/service/impl/AppServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/app/service/impl/AppServiceImpl.java
@@ -182,4 +182,9 @@
         return flag;
     }
 
+    @Override
+    public List<TNcDevice> findAllDevByUserIdAndDevName(String userId, String devName) {
+        return appDao.findAllDevByUserIdAndDevName(userId, devName);
+    }
+
 }
diff --git a/src/main/resources/templates/apph5/remoteMintUIH5.html b/src/main/resources/templates/apph5/remoteMintUIH5.html
index ca45906..7434655 100644
--- a/src/main/resources/templates/apph5/remoteMintUIH5.html
+++ b/src/main/resources/templates/apph5/remoteMintUIH5.html
@@ -23,6 +23,13 @@
 <body>
 <div id="app" >
     <div class="page-title" style="text-align:center; font-size: 24px;color: #FF8247">请点击开门设备</div><br>
+    <mt-search
+            v-model="devName"
+            cancel-text="取消"
+            placeholder="请输入设备名称"
+            @keyup.enter.native="loadListData(devName)">
+    </mt-search>
+
     <mt-cell title="楼栋"  >
         <span style="color: #0000FF">门禁设备</span>
     </mt-cell>
@@ -43,11 +50,24 @@
             devList:[],
             userId:'',
             selectDevId:'',
+            devName:'',
         },
         methods: {
             openDoor:function (devId) {
                 mint_openDoor(devId);
             },
+            loadListData:function (devName) {
+                mint_searchByDevName(devName);
+            },
+
+        },
+        watch:{
+            devName:function(newvs,oldvs){
+
+                if(!newvs){
+                    mint_searchByDevName('');
+                }
+            }
         },
         created:function(){
             var _self = this;
@@ -64,6 +84,7 @@
                     var ut = ret.devList;
                     if (ut == null){
                         confirm("不具有开门权限");
+                        return;
                     }
                     var devs = [];
                     var names = [];
@@ -112,8 +133,44 @@
         });
 
     }
+
+    function mint_searchByDevName(devName) {
+        var userId = mint_vue.userId;
+        $.ajax({
+            type: "get",
+            dataType: "json",
+            url: "[[@{/app/searchByDevName?userId=}]]"+userId+"&devName="+devName,
+            success: function (ret) {
+                var ut = ret.devNameList;
+                if (ut == null) {
+                    confirm("没有对应设备！");
+                    return;
+                }
+                var devs = [];
+                var names = [];
+                var ids = [];
+                for (var i = 0; i < ut.length; i++) {
+                    devs.push({
+                        label: ut[i].devname,
+                        value: ut[i].deviceid,
+                        building: ut[i].buildingname
+                    });
+                    names.push(ut[i].devname);
+                    ids.push(ut[i].deviceid);
+                }
+                mint_vue.devList = devs;
+            }
+        })
+    }
 </script>
 <style>
+    .mint-search{
+        height:50px;
+    }
 
+    .mint-searchbar{
+        padding:1px 1px 1px 1px;
+        box-sizing: border-box
+    }
 </style>
 </html>
