diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/controller/DeviceManageController.java b/src/main/java/com/supwisdom/dlpay/restaurant/controller/DeviceManageController.java
index ed32a71..700aa53 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/controller/DeviceManageController.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/controller/DeviceManageController.java
@@ -78,8 +78,8 @@
     @GetMapping("/loadupdate")
     @PreAuthorize("hasPermission('/devicemanage/loadupdate','')")
     public String loadadd(Model model) {
-    List<TDeviceGroup> list = groupService.findAll();
-        model.addAttribute("grouplist", list);
+   /* List<TDeviceGroup> list = groupService.findAll();
+        model.addAttribute("grouplist", list);*/
         return "restaurant/devicemanage/form";    }
 
 
diff --git a/src/main/resources/templates/restaurant/devicemanage/form.html b/src/main/resources/templates/restaurant/devicemanage/form.html
index 41cf76a..b3d650f 100644
--- a/src/main/resources/templates/restaurant/devicemanage/form.html
+++ b/src/main/resources/templates/restaurant/devicemanage/form.html
@@ -10,36 +10,66 @@
     </div>
     <div class="layui-form-item">
         <label class="layui-form-label"><span style="color: red">* </span>设备组</label>
+
         <div class="layui-input-block">
-            <select name="devgroupid" id="devgroupid" lay-verify="required">
-                <option value="0">无</option>
-                <option th:each="group : ${grouplist}" th:value="${group.devgroupid}">[[${group.groupname}]]</option>
-            </select>
+            <input id="search-devmanagebind-form-devgroupid" type="text" name="devgroupid"
+                   lay-filter="search-devmanagebind-form-devgroupid-filter" autocomplete="off"
+                   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>
-        <button class="layui-btn" lay-filter="form-submit" lay-submit id="submitbtn">保存</button>
+        <button class="layui-btn" lay-filter="manage-form-submit" lay-submit id="submitbtn">保存</button>
     </div>
 </form>
 
 <script>
-    layui.use(['layer', 'admin', 'form', 'formSelects'], function () {
+    layui.use(['layer', 'admin', 'form', 'formSelects','treeSelect'], function () {
         var layer = layui.layer;
         var admin = layui.admin;
         var form = layui.form;
+        var treeSelect = layui.treeSelect;
         form.render('select');
         form.render('radio');
 
+        treeSelect.render({
+            elem: '#search-devmanagebind-form-devgroupid',
+            data: '[[@{/device/binddevparagrouptree}]]',
+            type: 'get',
+            placeholder: '选择设备组',
+            search: false,
+            style: {
+                folder: {
+                    enable: false
+                },
+                line: {
+                    enable: true
+                }
+            },
+            // 点击回调
+            click: function (d) {
+                var treeNode = d.current;
+                return true;
+            },
+            success: function (d) {
+                // 加载完成后的回调函数
+                //checkNode需指向filter而非id
+                treeSelect.checkNode(
+                    'search-devmanagebind-form-devgroupid-filter',
+                    dev.devgroupid);
+            }
+        });
+
 
         var url = '[[@{/devicemanage/update}]]';
         // 回显user数据
         var dev = admin.getTempData('t_devm');
         if (dev) {
-            $('input[name="id"]').attr('readonly', 'readonly');
+             $('input[name="id"]').attr('readonly', 'readonly');
             form.val('form', dev);
         }
         /* let fid = admin.getTempData("fid");
@@ -47,8 +77,7 @@
              form.val('form', {"fid": fid});
          }*/
         // 表单提交事件
-        form.on('submit(form-submit)', function (data) {
-            console.log(data);
+        form.on('submit(manage-form-submit)', function (data) {
             layer.load(2);
             let token = $("meta[name='_csrf_token']").attr("value");
             $.ajax({
@@ -72,7 +101,6 @@
                         }, 1000);
                         return;
                     } else {
-                        console.log('err:' + result.code);
                         layer.msg(result.msg, {icon: 2});
                     }
                 },
